You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@directory.apache.org by ji...@apache.org on 2004/10/23 21:53:47 UTC

[jira] Assigned: (DIRSEDA-6) Race condition between disconnect and output events

Message:

   The following issue has been re-assigned.

   Assignee: Trustin Lee (mailto:trustin@gmail.com)
---------------------------------------------------------------------
View the issue:
  http://issues.apache.org/jira/browse/DIRSEDA-6

Here is an overview of the issue:
---------------------------------------------------------------------
        Key: DIRSEDA-6
    Summary: Race condition between disconnect and output events
       Type: Bug

     Status: Open
   Priority: Major

    Project: Seda Framework

   Assignee: Trustin Lee
   Reporter: Alex Karasulu

    Created: Thu, 16 Sep 2004 12:23 AM
    Updated: Sat, 23 Oct 2004 12:52 PM

Description:
On occasion I get the following failure from the echo server test:

-- o error message o --

Sep 16, 2004 2:50:52 AM org.apache.seda.output.LoggingOutputMonitor channelMissing WARNING: org.apache.seda.output.DefaultOutputManager@2d9c06 could not find channel for client 127.0.0.1:7<-127.0.0.1:2402

-- o error message o --

Now this means a channel for the client was expected in the output manager but was not found.  This can be caused by two possible conditions:

 1). the channel was not put into the output manager before first output event was processed
 2). the channel was removed from the output manager before all the output events could be processed

In the first case we have a race condition between the thread processing a ConnectEvent and a thread processing an OutputEvent.  The ConnectEvent processing is really slow in this case because all the stages were traversed via input->decode->reqproc->output before the ConnectEvent was handled.  That's a little far fetched so I'm going to presume that the second case is more likely.

In the second case the race condition is between the thread processing a DisconnectEvent and a thread processing an OutputEvent.  The DisconnectEvent in this case is outrunning the processing of the OutputEvent.  Before the OutputEvent can flush out data to the client the channel to the client is removed from the output manager by the DisconnectEvent.



---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.

If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa

If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira