|
@@ -93,8 +93,12 @@ class RepositoryServer: # pragma: no cover
|
|
|
f = getattr(self.repository, method)
|
|
|
res = f(*args)
|
|
|
except BaseException as e:
|
|
|
- logging.exception('Borg %s: exception in RPC call:', __version__)
|
|
|
- logging.error(sysinfo())
|
|
|
+ # These exceptions are reconstructed on the client end in RemoteRepository.call_many(),
|
|
|
+ # and will be handled just like locally raised exceptions. Suppress the remote traceback
|
|
|
+ # for these, except ErrorWithTraceback, which should always display a traceback.
|
|
|
+ if not isinstance(e, (Repository.DoesNotExist, Repository.AlreadyExists, PathNotAllowed)):
|
|
|
+ logging.exception('Borg %s: exception in RPC call:', __version__)
|
|
|
+ logging.error(sysinfo())
|
|
|
exc = "Remote Exception (see remote log for the traceback)"
|
|
|
os.write(stdout_fd, msgpack.packb((1, msgid, e.__class__.__name__, exc)))
|
|
|
else:
|