You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "Julien Vermillard (JIRA)" <ji...@apache.org> on 2009/10/12 11:55:31 UTC

[jira] Updated: (DIRMINA-734) Regression with flushing in MINA 2.0.0-M7 trunk

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

Julien Vermillard updated DIRMINA-734:
--------------------------------------

    Comment: was deleted

(was: 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;
    }
)

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