[ http://issues.apache.org/jira/browse/DIRMINA-82?page=all ]
Trustin Lee updated DIRMINA-82:
-------------------------------
Fix Version: 0.7.4
> IdleSession reported only once per IO
> -------------------------------------
>
> Key: DIRMINA-82
> URL: http://issues.apache.org/jira/browse/DIRMINA-82
> Project: Directory MINA
> Type: Bug
> Versions: 0.7.3
> Reporter: Ash Hornbeck
> Assignee: Trustin Lee
> Fix For: 0.7.4
>
> 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.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira