diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/utils/LazyPathHandler.java b/datamover/source/java/ch/systemsx/cisd/datamover/utils/LazyPathHandler.java index e99308d2ab8a6ceb2a28476be9a9dafad222dcff..3d5c8c33dc93aefc626401434c3d6092ef67ef6b 100644 --- a/datamover/source/java/ch/systemsx/cisd/datamover/utils/LazyPathHandler.java +++ b/datamover/source/java/ch/systemsx/cisd/datamover/utils/LazyPathHandler.java @@ -73,21 +73,28 @@ public class LazyPathHandler implements ITerminable, IPathHandler @Override public void run() { - while (terminate == false) + try { - try + while (terminate == false) { - File resource = queue.take(); // blocks if empty - boolean ok = handler.handle(resource); - logHandlingResult(resource, ok); - } catch (InterruptedException ex) - { - if (!terminate) + try + { + File resource = queue.take(); // blocks if empty + boolean ok = handler.handle(resource); + logHandlingResult(resource, ok); + } catch (InterruptedException ex) { - operationLog.info("Processing was unexpectedly interrupted. Thread stops."); + if (!terminate) + { + operationLog.info("Processing was unexpectedly interrupted. Thread stops."); + } + return; } - return; } + } catch (Exception ex) + { + // Just log it but ensure that the thread won't die. + notificationLog.error("An exception has occurred. (thread still running)", ex); } }