You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "Trustin Lee (JIRA)" <ji...@apache.org> on 2007/07/26 08:18:31 UTC

[jira] Created: (DIRMINA-405) IoSession.suspendRead() doesn't suspend read operation immediately under single thread model.

IoSession.suspendRead() doesn't suspend read operation immediately under single thread model.
---------------------------------------------------------------------------------------------

                 Key: DIRMINA-405
                 URL: https://issues.apache.org/jira/browse/DIRMINA-405
             Project: MINA
          Issue Type: Bug
          Components: Transport
    Affects Versions: 1.1.1, 1.0.4
            Reporter: Trustin Lee
            Assignee: Trustin Lee
             Fix For: 1.0.5, 1.1.2


IoSession.suspendRead() changes the sessions's traffic mask and notifies the SocketIoProcessor.  It is a normal behavior that the actual traffic control occurs asynchronously.  For example, If a user calls IoSession.suspendRead() after receiving a message after ExecutorFilter doesn't assure he or she receives another message even after suspendRead() is called.

However, SocketIoProcessor must guarantee that read operation is suspended immediately if suspendRead() is called from the same thread that SocketIoProcessor runs for users who need precise traffic control.

To resolve this issue, SocketIoProcessor should check the traffic mask after emitting each messageReceived event.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Reopened: (DIRMINA-405) IoSession.suspendRead() doesn't suspend read operation immediately when ProtocolCodecFilter is used.

Posted by "Trustin Lee (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/DIRMINA-405?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Trustin Lee reopened DIRMINA-405:
---------------------------------


> IoSession.suspendRead() doesn't suspend read operation immediately when ProtocolCodecFilter is used.
> ----------------------------------------------------------------------------------------------------
>
>                 Key: DIRMINA-405
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-405
>             Project: MINA
>          Issue Type: Bug
>          Components: Filter
>    Affects Versions: 1.0.4, 1.1.1
>            Reporter: Trustin Lee
>            Assignee: Trustin Lee
>             Fix For: 1.0.5, 1.1.2
>
>
> IoSession.suspendRead() changes the sessions's traffic mask and notifies the SocketIoProcessor.  It is a normal behavior that the actual traffic control occurs asynchronously.  For example, If a user calls IoSession.suspendRead() after receiving a message after ExecutorFilter doesn't assure he or she receives another message even after suspendRead() is called.
> However, it must guaranteed that no more messageReceived event is fired immediately after suspendRead() is called from the same thread that SocketIoProcessor runs for users who need precise traffic control.
> To resolve this issue, ProtocolCodecFilter should stop calling decoder as soon as the traffic mask is updated.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Closed: (DIRMINA-405) IoSession.suspendRead() doesn't suspend read operation immediately when ProtocolCodecFilter is used.

Posted by "Trustin Lee (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/DIRMINA-405?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Trustin Lee closed DIRMINA-405.
-------------------------------

       Resolution: Invalid
    Fix Version/s:     (was: 1.0.5)
                       (was: 1.1.2)

It was not actually a bug but an expected behavior.  I mistakenly misunderstood Luis' problem:

http://www.nabble.com/Messages-read-while-iosession-is-suspended.-tf4124854s16868.html

> IoSession.suspendRead() doesn't suspend read operation immediately when ProtocolCodecFilter is used.
> ----------------------------------------------------------------------------------------------------
>
>                 Key: DIRMINA-405
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-405
>             Project: MINA
>          Issue Type: Bug
>          Components: Filter
>    Affects Versions: 1.0.4, 1.1.1
>            Reporter: Trustin Lee
>            Assignee: Trustin Lee
>
> IoSession.suspendRead() changes the sessions's traffic mask and notifies the SocketIoProcessor.  It is a normal behavior that the actual traffic control occurs asynchronously.  For example, If a user calls IoSession.suspendRead() after receiving a message after ExecutorFilter doesn't assure he or she receives another message even after suspendRead() is called.
> However, it must guaranteed that no more messageReceived event is fired immediately after suspendRead() is called from the same thread that SocketIoProcessor runs for users who need precise traffic control.
> To resolve this issue, ProtocolCodecFilter should stop calling decoder as soon as the traffic mask is updated.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (DIRMINA-405) IoSession.suspendRead() doesn't suspend read operation immediately when ProtocolCodecFilter is used.

Posted by "Trustin Lee (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/DIRMINA-405?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Trustin Lee resolved DIRMINA-405.
---------------------------------

    Resolution: Fixed

ProtocolCodecFilter's internal ProtocolDecoderOutput implementation now stops flushing events when read operation is suspended.

> IoSession.suspendRead() doesn't suspend read operation immediately when ProtocolCodecFilter is used.
> ----------------------------------------------------------------------------------------------------
>
>                 Key: DIRMINA-405
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-405
>             Project: MINA
>          Issue Type: Bug
>          Components: Filter
>    Affects Versions: 1.0.4, 1.1.1
>            Reporter: Trustin Lee
>            Assignee: Trustin Lee
>             Fix For: 1.0.5, 1.1.2
>
>
> IoSession.suspendRead() changes the sessions's traffic mask and notifies the SocketIoProcessor.  It is a normal behavior that the actual traffic control occurs asynchronously.  For example, If a user calls IoSession.suspendRead() after receiving a message after ExecutorFilter doesn't assure he or she receives another message even after suspendRead() is called.
> However, it must guaranteed that no more messageReceived event is fired immediately after suspendRead() is called from the same thread that SocketIoProcessor runs for users who need precise traffic control.
> To resolve this issue, ProtocolCodecFilter should stop calling decoder as soon as the traffic mask is updated.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (DIRMINA-405) IoSession.suspendRead() doesn't suspend read operation immediately when ProtocolCodecFilter is used.

Posted by "Trustin Lee (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/DIRMINA-405?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Trustin Lee updated DIRMINA-405:
--------------------------------

    Component/s:     (was: Transport)
                 Filter
    Description: 
IoSession.suspendRead() changes the sessions's traffic mask and notifies the SocketIoProcessor.  It is a normal behavior that the actual traffic control occurs asynchronously.  For example, If a user calls IoSession.suspendRead() after receiving a message after ExecutorFilter doesn't assure he or she receives another message even after suspendRead() is called.

However, it must guaranteed that no more messageReceived event is fired immediately after suspendRead() is called from the same thread that SocketIoProcessor runs for users who need precise traffic control.

To resolve this issue, ProtocolCodecFilter should stop calling decoder as soon as the traffic mask is updated.

  was:
IoSession.suspendRead() changes the sessions's traffic mask and notifies the SocketIoProcessor.  It is a normal behavior that the actual traffic control occurs asynchronously.  For example, If a user calls IoSession.suspendRead() after receiving a message after ExecutorFilter doesn't assure he or she receives another message even after suspendRead() is called.

However, SocketIoProcessor must guarantee that read operation is suspended immediately if suspendRead() is called from the same thread that SocketIoProcessor runs for users who need precise traffic control.

To resolve this issue, SocketIoProcessor should check the traffic mask after emitting each messageReceived event.

        Summary: IoSession.suspendRead() doesn't suspend read operation immediately when ProtocolCodecFilter is used.  (was: IoSession.suspendRead() doesn't suspend read operation immediately under single thread model.)

> IoSession.suspendRead() doesn't suspend read operation immediately when ProtocolCodecFilter is used.
> ----------------------------------------------------------------------------------------------------
>
>                 Key: DIRMINA-405
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-405
>             Project: MINA
>          Issue Type: Bug
>          Components: Filter
>    Affects Versions: 1.0.4, 1.1.1
>            Reporter: Trustin Lee
>            Assignee: Trustin Lee
>             Fix For: 1.0.5, 1.1.2
>
>
> IoSession.suspendRead() changes the sessions's traffic mask and notifies the SocketIoProcessor.  It is a normal behavior that the actual traffic control occurs asynchronously.  For example, If a user calls IoSession.suspendRead() after receiving a message after ExecutorFilter doesn't assure he or she receives another message even after suspendRead() is called.
> However, it must guaranteed that no more messageReceived event is fired immediately after suspendRead() is called from the same thread that SocketIoProcessor runs for users who need precise traffic control.
> To resolve this issue, ProtocolCodecFilter should stop calling decoder as soon as the traffic mask is updated.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.