Hi,
we discussed off line with Julien about Idle session support. Here is a
sum up of what we talked about, and we may have to make some choice.
First of all, it's absolutely mandatory to be able to manage idle
sessions, in order to kill them, for instance. So we must offer a
mechanism by which the application developer can handle this.
In MINA 2, if a session is idle for more than a given amount of time
(configurable), either on read, write or both, then an event is fired on
the chain, up to the handler.
This is done in the selector loop. The problem with this approach is
that it's extremely expensive, and most certainly the worst possible
solution to deal with idle sessions, when it comes to manage hundred or
thousands of idle sessions. Another issue is that because it's really
awfully costly, the quantum between two detection is one second. Last,
not least, this one second os not very precise for a session, as if the
session was created between two checks, then the delay between the last
check and the session creation adds up. In other words, we can wait up
to one more second to detect that a session is idle.
We have some better ideas :
- first, not all the sessions can be controlled. We need a list of
session registered for an idle check
- second, and more important, we must have a dedicated thread
- last, not least, this mechanism should be optional. Ie, when the
session is created, it's up to the application to tell that the session
must be checked for idleness, by registering it into the idleController.
We should also allow a more fine grained control, like 100ms, and even,
it could be made configurable.
thoughts ?
--
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com