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