[infinispan-commits] Infinispan SVN: r2065 - trunk/core/src/main/java/org/infinispan/loaders/decorators.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Tue Jul 20 04:11:16 EDT 2010


Author: galder.zamarreno at jboss.com
Date: 2010-07-20 04:11:15 -0400 (Tue, 20 Jul 2010)
New Revision: 2065

Modified:
   trunk/core/src/main/java/org/infinispan/loaders/decorators/AsyncStore.java
Log:
[ISPN-545] (AsyncStore ignoring potential InterruptedException arising from 3rd party cache store libraries) Done.

Modified: trunk/core/src/main/java/org/infinispan/loaders/decorators/AsyncStore.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/loaders/decorators/AsyncStore.java	2010-07-20 08:09:23 UTC (rev 2064)
+++ trunk/core/src/main/java/org/infinispan/loaders/decorators/AsyncStore.java	2010-07-20 08:11:15 UTC (rev 2065)
@@ -381,12 +381,22 @@
          }
       }
 
-      boolean put(ConcurrentMap<Object, Modification> mods) {
+      boolean put(ConcurrentMap<Object, Modification> mods) throws InterruptedException {
          try {
             AsyncStore.this.applyModificationsSync(mods);
             return true;
          } catch (Exception e) {
-            if (log.isDebugEnabled()) log.debug("Failed to process async modifications", e);
+            boolean isDebug = log.isDebugEnabled();
+            if (isDebug) log.debug("Failed to process async modifications", e);
+            Throwable cause = e;
+            while (cause != null) {
+                if (cause instanceof InterruptedException) {
+                    // 3rd party code may have cleared the thread interrupt status
+                    if (isDebug) log.debug("Rethrowing InterruptedException");
+                    throw (InterruptedException) cause;
+                }
+                cause = cause.getCause();
+            }
             return false;
          }
       }



More information about the infinispan-commits mailing list