[
https://issues.apache.org/jira/browse/DIRMINA-687?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12708315#action_12708315
]
Emmanuel Lecharny commented on DIRMINA-687:
-------------------------------------------
I have run the tests against 2.0.0-M5, and got some error, accordingly to the
report. So I went a bit further last week-end, adding some logs, up to a point
I obtained those traces :
[05:56:01]-main INFO [testcase.MinaRegressionTest] - START
...
[05:56:02]-NioProcessor-2 INFO [testcase.MyIoHandler] - Creation of session 4
[05:56:02]-NioProcessor-2 INFO
[org.apache.mina.filter.executor.OrderedThreadPoolExecutor] - Adding event
SESSION_OPENED to session 4
Queue : [SESSION_OPENED, ]
[05:56:02]-MinaThread INFO
[org.apache.mina.filter.executor.OrderedThreadPoolExecutor] - Processing task
SESSION_OPENED for session 4
[05:56:02]-MinaThread DEBUG [org.apache.mina.core.filterchain.IoFilterEvent] -
Firing a SESSION_OPENED event for session 4
[05:56:02]-MinaThread INFO [testcase.MyIoHandler] - Session 4 is opened
[05:56:02]-MinaThread DEBUG [org.apache.mina.core.filterchain.IoFilterEvent] -
Event SESSION_OPENED has been fired for session 4
[05:56:02]-NioProcessor-2 INFO
[org.apache.mina.filter.executor.OrderedThreadPoolExecutor] - Adding event
MESSAGE_RECEIVED to session 4
Queue : [MESSAGE_RECEIVED, ]
[05:56:02]-MinaThread INFO
[org.apache.mina.filter.executor.OrderedThreadPoolExecutor] - Processing task
MESSAGE_RECEIVED for session 4
[05:56:02]-MinaThread DEBUG [org.apache.mina.core.filterchain.IoFilterEvent] -
Firing a MESSAGE_RECEIVED event for session 4
[05:56:02]-MinaThread INFO [org.apache.mina.filter.codec.ProtocolCodecFilter] -
Processing a MESSAGE_RECEIVED for session 4
[05:56:02]-NioProcessor-2 INFO
[org.apache.mina.filter.executor.OrderedThreadPoolExecutor] - Adding event
MESSAGE_RECEIVED to session 4
Queue : [MESSAGE_RECEIVED, ]
[05:56:02]-MinaThread INFO
[org.apache.mina.filter.executor.OrderedThreadPoolExecutor] - Processing task
MESSAGE_RECEIVED for session 4
[05:56:02]-MinaThread DEBUG [org.apache.mina.core.filterchain.IoFilterEvent] -
Firing a MESSAGE_RECEIVED event for session 4
[05:56:02]-MinaThread INFO [org.apache.mina.filter.codec.ProtocolCodecFilter] -
Processing a MESSAGE_RECEIVED for session 4
[05:56:02]-NioProcessor-2 INFO
[org.apache.mina.filter.executor.OrderedThreadPoolExecutor] - Adding event
SESSION_CLOSED to session 4
Queue : [SESSION_CLOSED, ]
[05:56:02]-MinaThread INFO
[org.apache.mina.filter.executor.OrderedThreadPoolExecutor] - Processing task
SESSION_CLOSED for session 4
[05:56:02]-MinaThread DEBUG [org.apache.mina.core.filterchain.IoFilterEvent] -
Firing a SESSION_CLOSED event for session 4
[05:56:02]-MinaThread INFO [testcase.MyIoHandler] - 4> Session closed
[05:56:02]-MinaThread DEBUG [org.apache.mina.core.filterchain.IoFilterEvent] -
Event SESSION_CLOSED has been fired for session 4
[05:56:03]-MinaThread ERROR [testcase.MyRequestDecoder] - 4> !session closed
before decoding completes!
[05:56:03]-MinaThread DEBUG [org.apache.mina.core.filterchain.IoFilterEvent] -
Event MESSAGE_RECEIVED has been fired for session 4
[05:56:03]-MinaThread ERROR [testcase.MyRequestDecoder] - 4> !decoding for
closed session!
[05:56:04]-MinaThread ERROR [testcase.MyRequestDecoder] - 4> !session closed
before decoding completes!
[05:56:04]-MinaThread INFO [testcase.MyRequestDecoder] - 4> done decoding
[05:56:04]-MinaThread DEBUG [org.apache.mina.core.filterchain.IoFilterEvent] -
Event MESSAGE_RECEIVED has been fired for session 4
...
[05:56:04]-main INFO [testcase.MinaRegressionTest] - Received: 0
[05:56:04]-main INFO [testcase.MinaRegressionTest] - Sent: 10
[05:56:04]-main INFO [testcase.MinaRegressionTest] - FINISH
(I'm focusing on session 4, from the server side, as it's one of the failing
session. It's random...)
What puzzle me is that the MESSAGE_RECEIVED event is added twice (but that
should not be a problem). More important, the SESSION_CLOSED event is processed
*before* the MESSAGE_RECEIVED is completely processed (even if the first
message is being processed by the codec).
Still debugging ...
> 2.0.0-M5 REGRESSION: sessionClosed called before doDecode completes
> -------------------------------------------------------------------
>
> Key: DIRMINA-687
> URL: https://issues.apache.org/jira/browse/DIRMINA-687
> Project: MINA
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.0.0-M5
> Reporter: Serge Baranov
> Assignee: Emmanuel Lecharny
> Priority: Critical
> Fix For: 2.0.0-RC1
>
> Attachments: regression-test.zip
>
>
> The problem is described in detail at
> http://markmail.org/message/3iqmkdcukhygxxva .
> I did more tests by setting the CLOSED custom attribute inside sessionClosed
> and by checking for this attribute in the middle of doDecode.
> Under some networking conditions on the production server I can see the
> following in the logs:
> [2009-04-16 22:30:17,329] Session closed in the middle of decoding!
> [2009-04-16 22:30:21,126] Session closed in the middle of decoding!
> [2009-04-16 22:30:22,345] Session closed in the middle of decoding!
> [2009-04-16 22:30:22,969] Session closed in the middle of decoding!
> [2009-04-16 22:30:25,217] Session closed in the middle of decoding!
> [2009-04-16 22:30:25,840] Session closed in the middle of decoding!
> [2009-04-16 22:30:59,958] Session closed in the middle of decoding!
> Unfortunately, I didn't manage to prepare an isolated test case for this
> issue, must be some race condition which is tricky to catch.
> Most likely the problem is caused by this commit:
> http://svn.apache.org/viewvc?view=rev&revision=762167 .
> As mentioned, this problem is new to 2.0.0-M5, worked fine for many months
> with 2.0.0-M4 and previous builds. Rolling back to M4 builds fixes the
> problem instantly.
> OrderedThreadPool must guarantee the order of events, sessionClosed must not
> be called when doDecode is in progress.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.