You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "Emmanuel Lecharny (JIRA)" <ji...@apache.org> on 2010/01/22 18:35:22 UTC

[jira] Closed: (DIRMINA-709) PENDING session is removed and added endlessly -- garbage allocation and high CPU usage problem

     [ https://issues.apache.org/jira/browse/DIRMINA-709?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Emmanuel Lecharny closed DIRMINA-709.
-------------------------------------


> 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
>            Assignee: Edouard De Oliveira
>             Fix For: 2.0.0-RC1
>
>
> (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.