You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@beehive.apache.org by "Carlin Rogers (JIRA)" <de...@beehive.apache.org> on 2006/09/29 19:43:20 UTC

[jira] Created: (BEEHIVE-1149) NetUI deadlock with NameService

NetUI deadlock with NameService 
--------------------------------

                 Key: BEEHIVE-1149
                 URL: http://issues.apache.org/jira/browse/BEEHIVE-1149
             Project: Beehive
          Issue Type: Bug
          Components: NetUI
    Affects Versions: v.next
            Reporter: Carlin Rogers
             Fix For: v.next


There's a thread deadlock problem in the interaction between the
NetUI DeferredSessionStorageHandler (DSSH) and a page flow that uses
the NameService (either in an action calling the
NameService.instance() or rendering a JSP with the netui:tree tag
using the XHR support.

The problem occurs when two concurrent threads get the locks on the
session mutex object and page flow controller in reverse order. It can
occur in the following way:

Thread A, Step 1 - PageFlowRequestProcessor.process() completes the
execute of the action and calls DSSH.applyChanges().
Thread A, Step 2 - DSSH.applyChanges() gets a lock on the session mutex object.

Thread B, Step 1 - PFRP.process() starts the process to execute the
action of a page flow.
Thread B, Step 2 - FlowController.execute() gets a lock on the page
flow controller object.

Thread A, Step 3 - DSSH.applyChanges() tries to get lock on page flow
controller object (to apply changes from the request to the
session)... and waits.

Thread B, Step 3 - The PageFlow action calls NameService.instance()
which in turn tries to get a lock on the session mutex object (to
ensure that only a single NameService object is created within a
specific user session)... and waits.

...in a deadlock now.


-- 
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
-
For more information on JIRA, see: http://www.atlassian.com/software/jira