You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "Emmanuel Lecharny (JIRA)" <ji...@apache.org> on 2015/06/04 12:59:38 UTC

[jira] [Updated] (DIRMINA-1012) SSLFilter does not work in combination with ExecutorFilter

     [ https://issues.apache.org/jira/browse/DIRMINA-1012?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Emmanuel Lecharny updated DIRMINA-1012:
---------------------------------------
    Description: 
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.

  was:
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:
        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);

I think that SslFilter have to work properly in multithreaded environment, but it doesn't.


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