diff --git a/common/source/java/ch/systemsx/cisd/common/concurrent/ConcurrencyUtilities.java b/common/source/java/ch/systemsx/cisd/common/concurrent/ConcurrencyUtilities.java
index 8498aa973387d42655fd0c50a4e1e26efd1aae53..f63d056e1a244fbb391a14e7fda75829e1068339 100644
--- a/common/source/java/ch/systemsx/cisd/common/concurrent/ConcurrencyUtilities.java
+++ b/common/source/java/ch/systemsx/cisd/common/concurrent/ConcurrencyUtilities.java
@@ -373,6 +373,16 @@ public final class ConcurrencyUtilities
         } catch (ExecutionException ex)
         {
             final Throwable cause = ex.getCause();
+            if (cause instanceof InterruptedExceptionUnchecked)
+            {
+                future.cancel(true);
+                if (logSettingsOrNull != null)
+                {
+                    logSettingsOrNull.getLogger().log(logSettingsOrNull.getLogLevelForError(),
+                            String.format("%s: interrupted.", logSettingsOrNull.getOperationName()));
+                }
+                return ExecutionResult.createInterrupted();
+            }
             if (logSettingsOrNull != null)
             {
                 final String message =