Emmanuel Lecharny created DIRMINA-1095:
------------------------------------------
Summary: 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
Fix For: 2.0.20
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)