[jboss-cvs] JBossAS SVN: r89142 - trunk/connector/src/main/org/jboss/resource/adapter/mail/inflow.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue May 19 21:11:46 EDT 2009


Author: david.lloyd at jboss.com
Date: 2009-05-19 21:11:46 -0400 (Tue, 19 May 2009)
New Revision: 89142

Modified:
   trunk/connector/src/main/org/jboss/resource/adapter/mail/inflow/NewMsgsWorker.java
Log:
JBAS-6949: correct interrupt handling

Modified: trunk/connector/src/main/org/jboss/resource/adapter/mail/inflow/NewMsgsWorker.java
===================================================================
--- trunk/connector/src/main/org/jboss/resource/adapter/mail/inflow/NewMsgsWorker.java	2009-05-19 23:23:00 UTC (rev 89141)
+++ trunk/connector/src/main/org/jboss/resource/adapter/mail/inflow/NewMsgsWorker.java	2009-05-20 01:11:46 UTC (rev 89142)
@@ -22,15 +22,14 @@
 package org.jboss.resource.adapter.mail.inflow;
 
 import java.util.concurrent.PriorityBlockingQueue;
+import org.jboss.logging.Logger;
 
 import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import javax.resource.spi.work.WorkEvent;
 import javax.resource.spi.work.WorkException;
-import javax.resource.spi.work.WorkEvent;
 import javax.resource.spi.work.WorkListener;
+import javax.resource.spi.work.WorkManager;
 
-import org.jboss.logging.Logger;
-
 /**
  * @author Scott.Stark at jboss.org
  * @version $Revision$
@@ -69,33 +68,43 @@
    {
       if( trace )
          log.trace("Begin run");
-      while( released == false )
+      boolean intr = Thread.interrupted();
+      try
       {
-         try
+         while( released == false )
          {
-            MailActivation ma = (MailActivation) pollQueue.take();
-            // Wait until its time to check for new msgs
-            long now = System.currentTimeMillis();
-            long nextTime = ma.getNextNewMsgCheckTime();
-            long sleepMS = nextTime - now;
-            Thread.sleep(sleepMS);
-            if( released )
-               break;
-            // This has to go after the sleep otherwise we can get into an inconsistent state
-            if( ma.isReleased() )
-                continue;
-            // Now schedule excecution of the new msg check
-            mgr.scheduleWork(ma, WorkManager.INDEFINITE, null, this);
+            try
+            {
+               MailActivation ma = (MailActivation) pollQueue.take();
+               // Wait until its time to check for new msgs
+               long now = System.currentTimeMillis();
+               long nextTime = ma.getNextNewMsgCheckTime();
+               long sleepMS = nextTime - now;
+               Thread.sleep(sleepMS);
+               if( released )
+                  break;
+               // This has to go after the sleep otherwise we can get into an inconsistent state
+               if( ma.isReleased() )
+                   continue;
+               // Now schedule excecution of the new msg check
+               mgr.scheduleWork(ma, WorkManager.INDEFINITE, null, this);
+            }
+            catch(InterruptedException e)
+            {
+               intr = true;
+               if (trace)
+                  log.trace("Messages worker interrupted during new message check...");
+            }
+            catch (WorkException e)
+            {
+               log.warn("Failed to schedule new msg check", e);
+            }
          }
-         catch(InterruptedException e)
-         {
-            log.warn("Interrupted waiting for new msg check", e);
-         }
-         catch (WorkException e)
-         {
-            log.warn("Failed to schedule new msg check", e);            
-         }
       }
+      finally
+      {
+         if (intr) Thread.currentThread().interrupt();
+      }
       if( trace )
          log.trace("End run");
    }




More information about the jboss-cvs-commits mailing list