PENDING session is removed and added endlessly  -- garbage allocation and high 
CPU usage problem
------------------------------------------------------------------------------------------------

                 Key: DIRMINA-709
                 URL: https://issues.apache.org/jira/browse/DIRMINA-709
             Project: MINA
          Issue Type: Bug
          Components: Core
    Affects Versions: 2.0.0-M4
         Environment: Debian Linux, kernel 2.6.24
            Reporter: Victor N


(This problem was discussed in mail lists, I will copy it here).

Seems I have found a bug with IoSession - I can see that a "PREPARING" session 
is not removed correctly from queue.

When some session is in PREPARING state, it is removed from "removingSessions" 
queue but right after that it is added to this queue again! So this session is 
added to the queue and removed from it until forever.
As a result, this give us significant garbage allocation, so CPU spends most of 
time in garbage collector (I can see this is JConsole).

I see comments there in AbstractPollingIoProcessor class:

private int remove() {
...
    case PREPARING:
                // Retry later if session is not yet fully initialized.
                // (In case that Session.close() is called before      
addSession() is processed)
                scheduleRemove(session);
                return removedSessions;
...
}

I have added logging to this code, and I can see that the SAME session is 
removed and added again and again.

Can somebody explain this logic please? Why don't we remove the PENDING  
session? Or maybe is there a workaround for this.

Sorry, I can not provide a test for this issue, but it is reproduced almost 
every day at out production servers under some load. Maybe, you can reproduce 
it by adding a delay in addSession() and then closing the session during this 
delay.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to