From d6dd94586f6dbdae816487349adbdaa5e1962f25 Mon Sep 17 00:00:00 2001
From: brinn <brinn>
Date: Tue, 12 Jan 2010 20:47:08 +0000
Subject: [PATCH] fix: ensure that an InterruptedExceptionUnchecked will lead
 to ExceptionStatus.INTERRUPTED rather than ExceptionStatus.EXCPETIONAL in
 getResult()

SVN: 14259
---
 .../cisd/common/concurrent/ConcurrencyUtilities.java   | 10 ++++++++++
 1 file changed, 10 insertions(+)

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 8498aa97338..f63d056e1a2 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 =
-- 
GitLab