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/04/21 00:09:51 UTC

[jira] Commented: (DIRMINA-772) First sent message is not garbage collected per session

    [ https://issues.apache.org/jira/browse/DIRMINA-772?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12859093#action_12859093 ] 

Emmanuel Lecharny commented on DIRMINA-772:
-------------------------------------------

Not sure I understand the problem you met.

We have used MINA for hours, and if correctly used, there is no message getting stuck once the session is closed.

Can you be a bit more explicit, or provide a portion of coe demonstrating the issue you have ?

Thanks !

> First sent message is not garbage collected per session
> -------------------------------------------------------
>
>                 Key: DIRMINA-772
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-772
>             Project: MINA
>          Issue Type: Bug
>    Affects Versions: 2.0.0-RC1
>         Environment: WinXP JDK 1.6.1_18
>            Reporter: Jörg Michelberger
>
> Hi there,
> I did a heap dump of my application containing MINA 2.0.0RC1 and found a lot of my messages not garbage collected.
> I use ProtocolCodecFilter. 
> After a investigation with VisualVM I found my already sent messages stucking in a DefaultWriteRequest as attribute message. 
> The DefaultWriteRequest is attribute writeRequest in ProtocolCodecFilter$ProtocolEncoderOutputImpl. 
> ProtocolCodecFilter$ProtocolEncoderOutputImpl stucks with key ENCODER_OUT in the sessions attribute map. 
> WriteRequest in ProtocolCodecFilter$ProtocolEncoderOutputImpl is not released after flushing...
> The attribute ENCODER_OUT is never removed from attributes.
> Seems that only first Message stucks ProtocolEncoderOutputImpl as result of constructor call of ProtocolCodecFilter line 543. ProtocolEncoderOutputImpl is stored for later usage in ProtocolCodecFilter line 298, but only for providing public void write(Object encodedMessage) API.
> Hmm, ProtocolEncoderOutputImpl should store not the whole WriteRequest, only significant data.
> ProtocolCodecFilter.java
>     private ProtocolEncoderOutput getEncoderOut(IoSession session,
>         NextFilter nextFilter, WriteRequest writeRequest) {
>         ProtocolEncoderOutput out = (ProtocolEncoderOutput) session.getAttribute(ENCODER_OUT);
>         
>         if (out == null) {
>             // Create a new instance, and stores it into the session
>             out = new ProtocolEncoderOutputImpl(session, nextFilter, writeRequest);
>             session.setAttribute(ENCODER_OUT, out);
>         }
>         
>         return out;
>     }
> Regards
> 	Jörg Michelberger

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