[
https://issues.apache.org/jira/browse/DIRMINA-82?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Emmanuel Lecharny closed DIRMINA-82.
------------------------------------
> IdleSession reported only once per IO
> -------------------------------------
>
> Key: DIRMINA-82
> URL: https://issues.apache.org/jira/browse/DIRMINA-82
> Project: MINA
> Issue Type: Bug
> Affects Versions: 0.7.3
> Reporter: Ash Hornbeck
> Assignee: Trustin Lee
> Fix For: 0.8.0
>
>
> IdleSession reported only once per IO
> For example, if I do something like this
> // session is a ProtocolSession from an IoProtocolConnector
> session.getConfig().setIdleTime(IdleStatus.BOTH_IDLE,30 );
> and a connection is idle for 301 seconds (both read and write), I expect
> roughly 10 IdleStatus.BOTH_IDLE events. In 0.7.3 it will only be fired once
> and only once until IO occurs. It looks like it is due to the way idle
> sessions are detected in the following:
> SocketIoProcessor.java:
> private void notifyIdleSession0( SocketSession session, long currentTime,
> long idleTime, IdleStatus status,
> long lastIoTime )
> {
> if( idleTime > 0 && !session.isIdle( status ) && lastIoTime != 0
> && ( currentTime - lastIoTime ) >= idleTime )
> {
> session.setIdle( status, true );
> session.getManagerFilterChain().sessionIdle( session, status );
> }
> }
> Please correct me if I am wrong but it looks as though the statement in the
> if clause, !session.isIdle( status ), is used to detect if the idle event has
> been fired. This prevents multiple session idle events from being fired due
> to selector timeouts in Worker.run().
> The problem is that using this method there is no way to know that the last
> idle event was fired greater than idle timeout seconds ago and another event
> needs to be fired.
> My suggestion is to add lastIdleEventForBoth/Read/Write and replace
> !session.isIdle( status) with (currentTime ? lastIdleEvent) >= idleTime.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.