You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2010/10/05 20:19:02 UTC

svn commit: r1004755 - in /james/server/trunk: spoolmanager/src/main/java/org/apache/james/transport/JamesSpoolManager.java spring-deployment/src/main/config/james/spring-beans.xml

Author: norman
Date: Tue Oct  5 18:19:02 2010
New Revision: 1004755

URL: http://svn.apache.org/viewvc?rev=1004755&view=rev
Log:
Explicit tell MailQueueFactory to depends on broker bean so spring does the shutdown ordering right. Also ignore exceptions while stop spoolmanage threads on destroying

Modified:
    james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/JamesSpoolManager.java
    james/server/trunk/spring-deployment/src/main/config/james/spring-beans.xml

Modified: james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/JamesSpoolManager.java
URL: http://svn.apache.org/viewvc/james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/JamesSpoolManager.java?rev=1004755&r1=1004754&r2=1004755&view=diff
==============================================================================
--- james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/JamesSpoolManager.java (original)
+++ james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/JamesSpoolManager.java Tue Oct  5 18:19:02 2010
@@ -24,6 +24,7 @@ package org.apache.james.transport;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
@@ -77,7 +78,7 @@ public class JamesSpoolManager implement
     /**
      * Spool threads are active
      */
-    private boolean active;
+    private AtomicBoolean active = new AtomicBoolean(false);
 
     /**
      * Spool threads
@@ -130,7 +131,7 @@ public class JamesSpoolManager implement
             logger.info(infoBuffer.toString());
         }
 
-        active = true;
+        active.set(true);
         numActive = 0;
         spoolThreads = new java.util.ArrayList<Thread>(numThreads);
         for ( int i = 0 ; i < numThreads ; i++ ) {
@@ -153,7 +154,7 @@ public class JamesSpoolManager implement
         }
 
         numActive++;
-        while(active) {
+        while(active.get()) {
             try {
                 queue.deQueue(new DequeueOperation() {
                     
@@ -184,7 +185,7 @@ public class JamesSpoolManager implement
                 
                
             } catch (Throwable e) {
-                if (logger.isErrorEnabled()) {
+                if (active.get() && logger.isErrorEnabled()) {
                     logger.error("Exception processing mail in JamesSpoolManager.run "
                                       + e.getMessage(), e);
                 }
@@ -209,7 +210,7 @@ public class JamesSpoolManager implement
     @PreDestroy
     public void dispose() {
         logger.info("JamesSpoolManager dispose...");
-        active = false; // shutdown the threads
+        active.set(false); // shutdown the threads
         for (Thread thread: spoolThreads) {
             thread.interrupt(); // interrupt any waiting accept() calls.
         }

Modified: james/server/trunk/spring-deployment/src/main/config/james/spring-beans.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/spring-deployment/src/main/config/james/spring-beans.xml?rev=1004755&r1=1004754&r2=1004755&view=diff
==============================================================================
--- james/server/trunk/spring-deployment/src/main/config/james/spring-beans.xml (original)
+++ james/server/trunk/spring-deployment/src/main/config/james/spring-beans.xml Tue Oct  5 18:19:02 2010
@@ -150,7 +150,7 @@
         <property name="start" value="true" />
     </bean>
 
-    <bean id="mailQueueFactory" class="org.apache.james.queue.activemq.ActiveMQMailQueueFactory">
+    <bean id="mailQueueFactory" class="org.apache.james.queue.activemq.ActiveMQMailQueueFactory" depends-on="broker">
         <!-- Allow to specify if BlobMessage or BytesMessage should be used for storing the Mail in the queue-->
         <!-- Please have a look at the javadocs of ActiveMQMailQueue for more information -->
         <!-- By default only BytesMessage is used -->



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org