mina-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Emmanuel Lecharny (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DIRMINA-1012) SSLFilter does not work in combination with ExecutorFilter
Date Thu, 04 Jun 2015 12:24:38 GMT

    [ https://issues.apache.org/jira/browse/DIRMINA-1012?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14572672#comment-14572672

Emmanuel Lecharny commented on DIRMINA-1012:

I highly suspect that your backend was doing expensive things in a blocking way (like reading
data from a DB), and with only nbProcessor+1 threads, you were facing a bottleneck. In this
case, yes, an executor is the way to go.

Now, as the SSL handling is pure CPU, unless you can dedicate processors to handle the SSL
part, which is doubtful considering that your Acceptor is already configured to use all the
existing processors, you won't see any gain in multithreading *before* the SSLFilter. Quite
the opposite, in fact : as you have more threads than the existing processors, you will have
a lot of context switches between threads, which will cost more than having a 1-1 relation
between CPU intensive tasks and the physical processors.

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

View raw message