[jboss-cvs] JBossAS SVN: r112568 - in projects/jboss-jca/branches/Branch_1_0/core/src/main/java/org/jboss/jca/core/connectionmanager: pool and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Jan 9 12:40:19 EST 2012


Author: jesper.pedersen
Date: 2012-01-09 12:40:18 -0500 (Mon, 09 Jan 2012)
New Revision: 112568

Modified:
   projects/jboss-jca/branches/Branch_1_0/core/src/main/java/org/jboss/jca/core/connectionmanager/AbstractConnectionManager.java
   projects/jboss-jca/branches/Branch_1_0/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPool.java
   projects/jboss-jca/branches/Branch_1_0/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/ArrayBlockingQueueManagedConnectionPool.java
   projects/jboss-jca/branches/Branch_1_0/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/SemaphoreArrayListManagedConnectionPool.java
Log:
[JBJCA-721] New interrupt policy

Modified: projects/jboss-jca/branches/Branch_1_0/core/src/main/java/org/jboss/jca/core/connectionmanager/AbstractConnectionManager.java
===================================================================
--- projects/jboss-jca/branches/Branch_1_0/core/src/main/java/org/jboss/jca/core/connectionmanager/AbstractConnectionManager.java	2012-01-09 17:35:20 UTC (rev 112567)
+++ projects/jboss-jca/branches/Branch_1_0/core/src/main/java/org/jboss/jca/core/connectionmanager/AbstractConnectionManager.java	2012-01-09 17:40:18 UTC (rev 112568)
@@ -314,7 +314,7 @@
    protected ConnectionListener getManagedConnection(Transaction transaction, Subject subject,
          ConnectionRequestInfo cri) throws ResourceException
    {
-      ResourceException failure = null;
+      Exception failure = null;
 
       if (shutdown.get())
       {
@@ -322,6 +322,8 @@
       }
 
       // First attempt
+      boolean isInterrupted = Thread.interrupted();
+      boolean innerIsInterrupted = false;
       try
       {
          return pool.getConnection(transaction, subject, cri);
@@ -345,6 +347,13 @@
                   log.trace("Attempting allocation retry for cri=" + cri);
                }
 
+
+               if (Thread.currentThread().isInterrupted())
+               {
+                  Thread.interrupted();
+                  innerIsInterrupted = true;
+               }
+
                try
                {
                   if (allocationRetryWaitMillis != 0)
@@ -360,11 +369,22 @@
                }
                catch (InterruptedException ie)
                {
-                  throw new ResourceException(bundle.getManagedConnectionRetryWaitInterrupted(jndiName), ie);
+                  failure = ie;
+                  innerIsInterrupted = true;
                }
             }
          }
       }
+      finally
+      {
+         if (isInterrupted || innerIsInterrupted)
+         {
+            Thread.currentThread().interrupt();
+      
+            if (innerIsInterrupted)
+               throw new ResourceException(bundle.getManagedConnectionRetryWaitInterrupted(jndiName), failure);
+         }
+      }
 
       // If we get here all retries failed, throw the lastest failure
       throw new ResourceException(bundle.unableGetManagedConnection(jndiName), failure);

Modified: projects/jboss-jca/branches/Branch_1_0/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPool.java
===================================================================
--- projects/jboss-jca/branches/Branch_1_0/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPool.java	2012-01-09 17:35:20 UTC (rev 112567)
+++ projects/jboss-jca/branches/Branch_1_0/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/AbstractPool.java	2012-01-09 17:40:18 UTC (rev 112568)
@@ -451,6 +451,8 @@
       }
       catch (InterruptedException ie)
       {
+         Thread.interrupted();
+         
          throw new ResourceException(bundle.unableObtainLock(), ie);
       }
       try
@@ -505,6 +507,8 @@
       }
       catch (InterruptedException ie)
       {
+         Thread.interrupted();
+
          throw new ResourceException(bundle.unableObtainLock(), ie);
       }
       try

Modified: projects/jboss-jca/branches/Branch_1_0/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/ArrayBlockingQueueManagedConnectionPool.java
===================================================================
--- projects/jboss-jca/branches/Branch_1_0/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/ArrayBlockingQueueManagedConnectionPool.java	2012-01-09 17:35:20 UTC (rev 112567)
+++ projects/jboss-jca/branches/Branch_1_0/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/ArrayBlockingQueueManagedConnectionPool.java	2012-01-09 17:40:18 UTC (rev 112568)
@@ -234,6 +234,8 @@
             }
             catch (InterruptedException ie)
             {
+               Thread.interrupted();
+
                long end = System.currentTimeMillis() - startWait;
                throw new ResourceException(bundle.interruptedWhileRequestingConnection(end));
             }
@@ -272,6 +274,8 @@
          }
          catch (InterruptedException ie)
          {
+            Thread.interrupted();
+
             if (!poolConfiguration.isUseFastFail())
             {
                throw new ResourceException(bundle.noMManagedConnectionsAvailableWithinConfiguredBlockingTimeout(
@@ -439,6 +443,8 @@
             }
             catch (InterruptedException ie)
             {
+               Thread.interrupted();
+
                cl.setState(ConnectionState.DESTROY);
                kill = true;
             }

Modified: projects/jboss-jca/branches/Branch_1_0/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/SemaphoreArrayListManagedConnectionPool.java
===================================================================
--- projects/jboss-jca/branches/Branch_1_0/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/SemaphoreArrayListManagedConnectionPool.java	2012-01-09 17:35:20 UTC (rev 112567)
+++ projects/jboss-jca/branches/Branch_1_0/core/src/main/java/org/jboss/jca/core/connectionmanager/pool/mcp/SemaphoreArrayListManagedConnectionPool.java	2012-01-09 17:40:18 UTC (rev 112568)
@@ -381,6 +381,8 @@
       }
       catch (InterruptedException ie)
       {
+         Thread.interrupted();
+
          long end = System.currentTimeMillis() - startWait;
          statistics.deltaTotalBlockingTime(end);
          throw new ResourceException(bundle.interruptedWhileRequestingPermit(end));
@@ -723,6 +725,8 @@
          }
          catch (InterruptedException ignored)
          {
+            Thread.interrupted();
+
             if (trace)
                log.trace("Interrupted while requesting permit in fillToMin");
          }



More information about the jboss-cvs-commits mailing list