[ 
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.

Reply via email to