[ 
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)

Reply via email to