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
 Assigned to: Trustin Lee 


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

Reply via email to