[
https://issues.apache.org/jira/browse/DIRMINA-1095?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Emmanuel Lecharny updated DIRMINA-1095:
---------------------------------------
Fix Version/s: (was: 2.1.0)
2.1.1
> Seems like the management f UDP sessions is really unneficient
> --------------------------------------------------------------
>
> Key: DIRMINA-1095
> URL: https://issues.apache.org/jira/browse/DIRMINA-1095
> Project: MINA
> Issue Type: Improvement
> Affects Versions: 2.0.19
> Reporter: Emmanuel Lecharny
> Assignee: Jonathan Valliere
> Priority: Major
> Fix For: 2.1.1
>
>
> When we process incoming UDP messages, we iterate over the activated
> {{SelectionKey}}s. That's ok, but for each one of them, we read the data and
> try to flush the scheduled messages. The loop where it's done seems to
> iterate on *all* the managed sessions, for each keys we are processing :
> {code:java}
> private void processReadySessions(Set<SelectionKey> handles) {
> Iterator<SelectionKey> iterator = handles.iterator();
> while (iterator.hasNext()) {
> SelectionKey key = iterator.next();
> DatagramChannel handle = (DatagramChannel) key.channel();
> iterator.remove();
> try {
> if (key.isValid() && key.isReadable()) {
> readHandle(handle);
> }
> if (key.isValid() && key.isWritable()) {
> for (IoSession session : getManagedSessions().values()) {
> scheduleFlush((NioSession) session);
> ...
> {code}
> There is no reason to do so. First, we should not iterate on all the managed
> sessions (we may have thousands), but only the sessions which have something
> to write, and we certainly should not do that for every active key...
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)