in nxdrive.engine.processor.Processor method _execute, if an exception is raised (by any handler), the error is logged but code which uses nuxeo-drive cannot process the error in other components, e.g. Engine or Manager.
class Processor(EngineWorker): ... def _execute(self): ... try: ... sync_handler(doc_pair, local_client, remote_client) ... except ThreadInterrupt: raise except PairInterrupt: ... continue except Exception as e: if isinstance(e, IOError) and e.errno == 28: self._engine.syncCompleted.emit() self._engine.noSpaceLeftOnDevice.emit() log.exception(e) self.increase_error(doc_pair, "SYNC HANDLER: %s" % handler_name, exception=e) ... continue
The generic Exception block deals with only one specific exception (disk full), but other exceptions just increase error count (of the corresponding item or "docpair") without the ability of other components to participate in processing the error.
We should use a method in Processor to allow easier override of the error management
- is related to
-
NXDRIVE-699 Improve exception propagation
- Resolved