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() {