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

Reply via email to