We are using MINA 1.1.5 in our application. During shutdown, we
intermittently see RejectedExecutionExceptions inside the MINA
ExecutorFilter.
Here is an example stack trace:
EXCEPTION:
java.util.concurrent.RejectedExecutionException
at
java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(Thread
PoolExecutor.java:1759)
at
java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:767)
at
java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:658)
at
org.apache.mina.filter.executor.ExecutorFilter.fireEvent(ExecutorFilter.java
:101)
at
org.apache.mina.filter.executor.ExecutorFilter.sessionClosed(ExecutorFilter.
java:194)
at
org.apache.mina.common.support.AbstractIoFilterChain.callNextSessionClosed(A
bstractIoFilterChain.java:269)
at
org.apache.mina.common.support.AbstractIoFilterChain.access$800(AbstractIoFi
lterChain.java:53)
at
org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.sessionClos
ed(AbstractIoFilterChain.java:
633)
at
org.apache.mina.filter.LoggingFilter.sessionClosed(LoggingFilter.java:65)
at
org.apache.mina.common.support.AbstractIoFilterChain.callNextSessionClosed(A
bstractIoFilterChain.java:269)
at
org.apache.mina.common.support.AbstractIoFilterChain.access$800(AbstractIoFi
lterChain.java:53)
at
org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.sessionClos
ed(AbstractIoFilterChain.java:
633)
at
org.apache.mina.filter.codec.ProtocolCodecFilter.sessionClosed(ProtocolCodec
Filter.java:247)
at
org.apache.mina.common.support.AbstractIoFilterChain.callNextSessionClosed(A
bstractIoFilterChain.java:269)
at
org.apache.mina.common.support.AbstractIoFilterChain.access$800(AbstractIoFi
lterChain.java:53)
at
org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.sessionClos
ed(AbstractIoFilterChain.java:
633)
at
org.apache.mina.filter.SSLFilter.sessionClosed(SSLFilter.java:373)
at
org.apache.mina.common.support.AbstractIoFilterChain.callNextSessionClosed(A
bstractIoFilterChain.java:269)
at
org.apache.mina.common.support.AbstractIoFilterChain.access$800(AbstractIoFi
lterChain.java:53)
at
org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.sessionClos
ed(AbstractIoFilterChain.java:
633)
at
org.apache.mina.common.support.AbstractIoFilterChain$HeadFilter.sessionClose
d(AbstractIoFilterChain.java:4
84)
at
org.apache.mina.common.support.AbstractIoFilterChain.callNextSessionClosed(A
bstractIoFilterChain.java:269)
at
org.apache.mina.common.support.AbstractIoFilterChain.fireSessionClosed(Abstr
actIoFilterChain.java:264)
at
org.apache.mina.common.support.IoServiceListenerSupport.fireSessionDestroyed
(IoServiceListenerSupport.java
:208)
at
org.apache.mina.transport.socket.nio.SocketIoProcessor.doRemove(SocketIoProc
essor.java:188)
at
org.apache.mina.transport.socket.nio.SocketIoProcessor.access$600(SocketIoPr
ocessor.java:45)
at
org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(SocketIoPr
ocessor.java:489)
at
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:
51)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.ja
va:885)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:9
07)
at java.lang.Thread.run(Thread.java:619)
And here is the relevant part of my shutdown code:
private SocketAcceptor acceptor;
private ExecutorService threadpool;
public void stop()
{
if ( acceptor != null )
{
acceptor.unbindAll();
acceptor = null;
}
if ( threadpool != null )
{
threadpool.shutdown();
threadpool = null;
}
}
Any idea what is going on here and how to fix?
Thanks,
Seth