[
https://issues.apache.org/jira/browse/DIRMINA-1012?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14572695#comment-14572695
]
Marat Gainullin commented on DIRMINA-1012:
------------------------------------------
Ok.
We have reconfigured our thread pool. And it consists of maximum number of
threads = processors-1.
We have no DB communication in our system right now (developing a new version).
Now we have ocasionally the following exceptions:
javax.net.ssl.SSLException: illegal change cipher spec msg, conn state = 1,
handshake state = 1
at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1666)
at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1634)
at sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:1092)
at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:907)
at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:781)
at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624)
at org.apache.mina.filter.ssl.SslHandler.unwrap(SslHandler.java:748)
at
org.apache.mina.filter.ssl.SslHandler.unwrapHandshake(SslHandler.java:683)
at org.apache.mina.filter.ssl.SslHandler.handshake(SslHandler.java:569)
at
org.apache.mina.filter.ssl.SslHandler.messageReceived(SslHandler.java:355)
at
org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:488)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:542)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1300(DefaultIoFilterChain.java:48)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:943)
at
org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:74)
at org.apache.mina.core.session.IoEvent.run(IoEvent.java:63)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
And ocasionally another exception:
java.lang.IllegalArgumentException
at java.nio.Buffer.position(Buffer.java:244)
at
org.apache.mina.filter.ssl.SslHandler.messageReceived(SslHandler.java:383)
at
org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:488)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:542)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1300(DefaultIoFilterChain.java:48)
at
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:943)
at
org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:74)
at org.apache.mina.core.session.IoEvent.run(IoEvent.java:63)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
And if we put SslFilter in front of ExecutorFilter everything becomes fine.
> SSLFilter does not work in combination with ExecutorFilter
> ----------------------------------------------------------
>
> Key: DIRMINA-1012
> URL: https://issues.apache.org/jira/browse/DIRMINA-1012
> Project: MINA
> Issue Type: Bug
> Components: Filter, SSL
> Affects Versions: 2.0.9
> Environment: Windows 7 x32
> Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
> Java HotSpot(TM) Client VM (build 25.45-b02, mixed mode, sharing)
> Reporter: Marat Gainullin
>
> If i include SslFilter after the ExecutorFilter in acceptor filter chain,
> than SslFilter works unstable. It works sometimes and sometimes it doesn't
> work. It is likely because of multithreaded environment.
> If I move it on top of the filter chain, it works fine.
> Here is buggy filter chain:
> {code}
> final IoAcceptor acceptor = new NioSocketAcceptor(executor/*Some
> outer thread pool*/, new NioProcessor(ioProcessorExecutor/*thread pool with
> only one thread (nio events waiter)*/));
> acceptor.getFilterChain().addLast("executor", new
> ExecutorFilter(executor, IoEventType.EXCEPTION_CAUGHT,
> IoEventType.MESSAGE_RECEIVED, IoEventType.MESSAGE_SENT,
> IoEventType.SESSION_CLOSED));
> acceptor.getFilterChain().addLast("encryption", sslFilter);
> acceptor.getFilterChain().addLast("platypusCodec", new
> ProtocolCodecFilter(new ResponseEncoder(), new RequestDecoder()));
> PlatypusRequestsHandler handler = new PlatypusRequestsHandler(this);
> acceptor.setHandler(handler);
> {code}
> I think that SslFilter have to work properly in multithreaded environment,
> but it doesn't.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)