mina-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Emmanuel Lecharny (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (DIRMINA-1025) A call to session.closed(true) may still flush messages.
Date Tue, 16 Aug 2016 13:02:20 GMT

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

Emmanuel Lecharny resolved DIRMINA-1025.
----------------------------------------
       Resolution: Fixed
    Fix Version/s:     (was: 2.0.14)
                   2.0.15

This should have been fixed with DIRMINA-1021

> A call to session.closed(true) may still flush messages.
> --------------------------------------------------------
>
>                 Key: DIRMINA-1025
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-1025
>             Project: MINA
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0.11
>            Reporter: Emmanuel Lecharny
>             Fix For: 2.0.15
>
>
> If we call for a {{session.close(true)}}, we expect the session not to write any messages
into the socket. 
> This is not what happen. The {{close(true)}} call just adds the session into the {{IoProcessor.removedSession}}
queue, and continue to proceed with {{flush}} before processing the session removal.
> Typically, if the session is being closed in a {{IoHandler.messageReceived()}}, then
it comes form the {{process()}} method call, which is :
> {noformat}
>     private void process(S session) {
>         // Process Reads
>         if (isReadable(session) && !session.isReadSuspended()) {
>             read(session);
>         }
>         // Process writes
>         if (isWritable(session) && !session.isWriteSuspended()) {
>             // add the session to the queue, if it's not already there
>             if (session.setScheduledForFlush(true)) {
>                 flushingSessions.add(session);
>             }
>         }
>     }
> {noformat}
> At this point, after the {{read}}, the {{write}} may be executed (typically if some big
message was written but not sent completely, so that the OP_WRITE flag was set to TRUE).
> We should most certainly check if the session is being closed before trying to write
something.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message