[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