mina-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Julien Vermillard (JIRA)" <j...@apache.org>
Subject [jira] Issue Comment Edited: (DIRMINA-734) Regression with flushing in MINA 2.0.0-M7 trunk
Date Mon, 12 Oct 2009 09:53:31 GMT

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

Julien Vermillard edited comment on DIRMINA-734 at 10/12/09 2:52 AM:
---------------------------------------------------------------------

Just a quick obvious tip :
use an AtomicInteger for generating sequence ID :

    public static int generateSeq(DemuxRomiEncoder enc, IoSession session) {
        AtomicInteger seq = (AtomicInteger) session.getAttribute("send_seq");

        int id;
        if (seq == null) {
            seq = new AtomicInteger(-1);
            session.setAttribute("send_seq", seq);
        }
        id = seq.getAndIncrement();
        
        if (enc.server)
            System.out.println("[Thread-" + Thread.currentThread().getId()
                    + "][" + session.getId() + "] RESERVED = " + seq);
        return id;
    }


      was (Author: vrm):
    Just a quick obvious tip :
use an AtomicInteger for generating sequence ID
  
> Regression with flushing in MINA 2.0.0-M7 trunk
> -----------------------------------------------
>
>                 Key: DIRMINA-734
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-734
>             Project: MINA
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0.0-M7
>            Reporter: Serge Baranov
>            Assignee: Emmanuel Lecharny
>             Fix For: 2.0.0-M7
>
>         Attachments: mina-flush-regression.zip
>
>
> It looks like the present trunk of MINA in the repository
> has a bug. Updating from M7 built on 06.06.2009 to the current trunk
> broke some of our tests.
> I've tried to build it today and ran our application tests, some of
> them failed.
> Reverting back to 06.06.2009 build has fixed the problem.
> At the first look it appears that session.close(false) behaves like
> session.close(true), as a result some messages are truncated (not
> being flushed on session.close(false)).
> If I comment out a call to session.close(false) (i.e. not closing the
> session at all when needed), the problem goes away.
> This behavior is inconsistent, test fails/succeeds randomly. On the
> first run it may pass, on the second run it may fail. Test fails about
> 10% of runs. The part which is not flushed is also random. Could be a
> race condition somewhere in MINA introduced in the last 2 months.
> I can't provide a test case yet, but our application is a kind of
> proxy, so it behaves like this:
> 1. client connects to the app and send a request
> 2. app connects to another server and sends a request
> 3. app gets a reply from the server and sends it back to the client
> 4. when another server closes the connection, app is closing the
>    connection with the client using session.close(false)
> The app may be still flushing data to client when closing the
> connection. As I said it worked fine with previous MINA versions, but
> has broken only recently.
> We are using OrderedThreadPoolExecutor and CumulativeProtocolDecoder
> if that matters.

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


Mime
View raw message