You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by el...@apache.org on 2010/01/17 18:25:45 UTC

svn commit: r900163 - in /mina/trunk: core/src/main/java/org/apache/mina/core/polling/ core/src/main/java/org/apache/mina/core/service/ core/src/main/java/org/apache/mina/core/session/ core/src/main/java/org/apache/mina/proxy/ core/src/main/java/org/ap...

Author: elecharny
Date: Sun Jan 17 17:25:44 2010
New Revision: 900163

URL: http://svn.apache.org/viewvc?rev=900163&view=rev
Log:
o Changed an error message which was misleading
o Removed the disposalFuture which is totally useless
o When calling dispose, kill the executor by calling shutdownNow
o Don't wait for the dispose() to be done, as we were waiting on our own thread to signal itself on terminaison : a dead eand !
This is a fix for DIRMINA-755

Modified:
    mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java
    mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java
    mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java
    mina/trunk/core/src/main/java/org/apache/mina/core/service/AbstractIoConnector.java
    mina/trunk/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java
    mina/trunk/core/src/main/java/org/apache/mina/core/session/DummySession.java
    mina/trunk/core/src/main/java/org/apache/mina/proxy/ProxyConnector.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
    mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java

Modified: mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java?rev=900163&r1=900162&r2=900163&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java Sun Jan 17 17:25:44 2010
@@ -33,7 +33,6 @@
 
 import org.apache.mina.core.RuntimeIoException;
 import org.apache.mina.core.buffer.IoBuffer;
-import org.apache.mina.core.future.IoFuture;
 import org.apache.mina.core.service.AbstractIoAcceptor;
 import org.apache.mina.core.service.IoAcceptor;
 import org.apache.mina.core.service.IoProcessor;
@@ -135,15 +134,10 @@
      * {@inheritDoc}
      */
     @Override
-    protected IoFuture dispose0() throws Exception {
+    protected void dispose0() throws Exception {
         unbind();
-        
-        if (!disposalFuture.isDone()) {
-            startupAcceptor();
-            wakeup();
-        }
-        
-        return disposalFuture;
+        startupAcceptor();
+        wakeup();
     }
 
     /**

Modified: mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java?rev=900163&r1=900162&r2=900163&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java Sun Jan 17 17:25:44 2010
@@ -34,7 +34,6 @@
 
 import org.apache.mina.core.RuntimeIoException;
 import org.apache.mina.core.filterchain.IoFilter;
-import org.apache.mina.core.future.IoFuture;
 import org.apache.mina.core.service.AbstractIoAcceptor;
 import org.apache.mina.core.service.IoAcceptor;
 import org.apache.mina.core.service.IoHandler;
@@ -287,13 +286,11 @@
      * {@inheritDoc}
      */
     @Override
-    protected IoFuture dispose0() throws Exception {
+    protected void dispose0() throws Exception {
         unbind();
-        if (!disposalFuture.isDone()) {
-            startupAcceptor();
-            wakeup();
-        }
-        return disposalFuture;
+
+        startupAcceptor();
+        wakeup();
     }
 
     /**

Modified: mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java?rev=900163&r1=900162&r2=900163&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java Sun Jan 17 17:25:44 2010
@@ -31,7 +31,6 @@
 import org.apache.mina.core.filterchain.IoFilter;
 import org.apache.mina.core.future.ConnectFuture;
 import org.apache.mina.core.future.DefaultConnectFuture;
-import org.apache.mina.core.future.IoFuture;
 import org.apache.mina.core.service.AbstractIoConnector;
 import org.apache.mina.core.service.IoConnector;
 import org.apache.mina.core.service.IoHandler;
@@ -299,12 +298,9 @@
      * {@inheritDoc}
      */
     @Override
-    protected final IoFuture dispose0() throws Exception {
-        if (!disposalFuture.isDone()) {
-            startupWorker();
-            wakeup();
-        }
-        return disposalFuture;
+    protected final void dispose0() throws Exception {
+        startupWorker();
+        wakeup();
     }
 
     /**

Modified: mina/trunk/core/src/main/java/org/apache/mina/core/service/AbstractIoConnector.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/service/AbstractIoConnector.java?rev=900163&r1=900162&r2=900163&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/core/service/AbstractIoConnector.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/core/service/AbstractIoConnector.java Sun Jan 17 17:25:44 2010
@@ -194,7 +194,7 @@
     public final ConnectFuture connect(SocketAddress remoteAddress,
             SocketAddress localAddress, IoSessionInitializer<? extends ConnectFuture> sessionInitializer) {
         if (isDisposing()) {
-            throw new IllegalStateException("Already disposed.");
+            throw new IllegalStateException("The connector has been disposed.");
         }
 
         if (remoteAddress == null) {

Modified: mina/trunk/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java?rev=900163&r1=900162&r2=900163&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java Sun Jan 17 17:25:44 2010
@@ -27,7 +27,6 @@
 import java.util.concurrent.Executor;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
-import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.mina.core.IoUtil;
@@ -144,8 +143,6 @@
 
     private volatile boolean disposed;
 
-    private IoFuture disposalFuture;
-
     /**
      * {@inheritDoc}
      */
@@ -276,40 +273,21 @@
             return;
         }
 
-        IoFuture dispFuture;
         synchronized (disposalLock) {
-            dispFuture = this.disposalFuture;
-            
             if (!disposing) {
                 disposing = true;
             
                 try {
-                    this.disposalFuture = dispFuture = dispose0();
+                    dispose0();
                 } catch (Exception e) {
                     ExceptionMonitor.getInstance().exceptionCaught(e);
-                } finally {
-                    if (dispFuture == null) {
-                        disposed = true;
-                    }
                 }
             }
         }
         
-        if (disposalFuture != null) {
-            disposalFuture.awaitUninterruptibly();
-        }
-
         if (createdExecutor) {
             ExecutorService e = (ExecutorService) executor;
-            e.shutdown();
-            
-            while (!e.isTerminated()) {
-                try {
-                    e.awaitTermination(Integer.MAX_VALUE, TimeUnit.SECONDS);
-                } catch (InterruptedException e1) {
-                    // Ignore; it should end shortly.
-                }
-            }
+            e.shutdownNow();
         }
 
         disposed = true;
@@ -319,7 +297,7 @@
      * Implement this method to release any acquired resources.  This method
      * is invoked only once by {@link #dispose()}.
      */
-    protected abstract IoFuture dispose0() throws Exception;
+    protected abstract void dispose0() throws Exception;
 
     /**
      * {@inheritDoc}

Modified: mina/trunk/core/src/main/java/org/apache/mina/core/session/DummySession.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/session/DummySession.java?rev=900163&r1=900162&r2=900163&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/core/session/DummySession.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/core/session/DummySession.java Sun Jan 17 17:25:44 2010
@@ -29,7 +29,6 @@
 import org.apache.mina.core.filterchain.DefaultIoFilterChain;
 import org.apache.mina.core.filterchain.IoFilter;
 import org.apache.mina.core.filterchain.IoFilterChain;
-import org.apache.mina.core.future.IoFuture;
 import org.apache.mina.core.service.AbstractIoAcceptor;
 import org.apache.mina.core.service.DefaultTransportMetadata;
 import org.apache.mina.core.service.IoAcceptor;
@@ -122,8 +121,7 @@
             }
 
             @Override
-            protected IoFuture dispose0() throws Exception {
-                return null;
+            protected void dispose0() throws Exception {
             }
         };
 

Modified: mina/trunk/core/src/main/java/org/apache/mina/proxy/ProxyConnector.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/proxy/ProxyConnector.java?rev=900163&r1=900162&r2=900163&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/proxy/ProxyConnector.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/proxy/ProxyConnector.java Sun Jan 17 17:25:44 2010
@@ -28,7 +28,6 @@
 import org.apache.mina.core.filterchain.IoFilter;
 import org.apache.mina.core.future.ConnectFuture;
 import org.apache.mina.core.future.DefaultConnectFuture;
-import org.apache.mina.core.future.IoFuture;
 import org.apache.mina.core.service.AbstractIoConnector;
 import org.apache.mina.core.service.DefaultTransportMetadata;
 import org.apache.mina.core.service.IoHandler;
@@ -240,11 +239,10 @@
      * {@inheritDoc}
      */
     @Override
-    protected IoFuture dispose0() throws Exception {
+    protected void dispose0() throws Exception {
         if (connector != null) {
             connector.dispose();
         }
-        return null;
     }
 
     /**

Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java?rev=900163&r1=900162&r2=900163&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java Sun Jan 17 17:25:44 2010
@@ -93,11 +93,10 @@
     }
 
     @Override
-    protected IoFuture dispose0() throws Exception {
+    protected void dispose0() throws Exception {
         // stop the idle checking task
         idleChecker.getNotifyingTask().cancel();
         unbind();
-        return null;
     }
 
     @Override

Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java?rev=900163&r1=900162&r2=900163&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java Sun Jan 17 17:25:44 2010
@@ -141,10 +141,9 @@
     }
 
     @Override
-    protected IoFuture dispose0() throws Exception {
+    protected void dispose0() throws Exception {
         // stop the idle checking task
         idleChecker.getNotifyingTask().cancel();
-        return null;
     }
 
     private static final Set<VmPipeAddress> TAKEN_LOCAL_ADDRESSES = new HashSet<VmPipeAddress>();

Modified: mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java
URL: http://svn.apache.org/viewvc/mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java?rev=900163&r1=900162&r2=900163&view=diff
==============================================================================
--- mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java (original)
+++ mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java Sun Jan 17 17:25:44 2010
@@ -30,14 +30,13 @@
 import java.util.TooManyListenersException;
 import java.util.concurrent.Executor;
 
-import org.apache.mina.core.service.AbstractIoConnector;
 import org.apache.mina.core.future.ConnectFuture;
 import org.apache.mina.core.future.DefaultConnectFuture;
-import org.apache.mina.core.session.IdleStatusChecker;
+import org.apache.mina.core.service.AbstractIoConnector;
 import org.apache.mina.core.service.IoConnector;
-import org.apache.mina.core.future.IoFuture;
-import org.apache.mina.core.session.IoSessionInitializer;
 import org.apache.mina.core.service.TransportMetadata;
+import org.apache.mina.core.session.IdleStatusChecker;
+import org.apache.mina.core.session.IoSessionInitializer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -131,10 +130,9 @@
     }
 
     @Override
-    protected IoFuture dispose0() throws Exception {
+    protected void dispose0() throws Exception {
         // stop the idle checking task
         idleChecker.getNotifyingTask().cancel();
-        return null;
     }
 
     public TransportMetadata getTransportMetadata() {