You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@river.apache.org by "Jim Hurley (JIRA)" <ji...@apache.org> on 2007/07/27 23:40:53 UTC

[jira] Created: (RIVER-140) JoinManager synchronization strategy should be reviewed, documented, and fixed where appropriate

JoinManager synchronization strategy should be reviewed, documented, and fixed where appropriate
------------------------------------------------------------------------------------------------

                 Key: RIVER-140
                 URL: https://issues.apache.org/jira/browse/RIVER-140
             Project: River
          Issue Type: Improvement
          Components: net_jini_lookup
    Affects Versions: jtsk_2.1
            Reporter: Jim Hurley
            Priority: Minor


Bugtraq ID [6219134|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6219134]

To help avoid possible race conditions or even deadlock, the synchronization
strategy employed by the JoinManager should be reviewed and documented.

Having some idea of how the threads and tasks interact, and how (and
why) access to shared data is controlled, should help with future 
maintenance of JoinManager.

Synchronization-related bugs discovered while addressing this bug should
be filed and addressed separately.

See the comments section for a list of the objects on which the JoinManager
currently synchronizes.

Comments

All objects on which JoinManager synchronizes:

     Object                        Scope of Object
------------------   -----------------------------------------------------
ProxyReg.taskList    each proxyReg stored in joinSet has its own taskList
joinSet              JoinManager
JoinManager (this)   JoinManager
taskMgr              JoinManager and taskMgr (and wakeupMgr?)
wakeupMgr            JoinManager and wakeupMgr
ProxyReg.this        each proxyReg stored in joinSet has its own taskList

ProxyReg.fail() syncs on 'this'. Not sure if this is right. Should file a
bug to investigate it.

Also, may be able to simplify things by syncing on joinSet in the places
where JoinManager itself is sync'd on (which is done only when trying to
determine if the JoinManager has been terminated).



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


[jira] Commented: (RIVER-140) JoinManager synchronization strategy should be reviewed, documented, and fixed where appropriate

Posted by "Jim Hurley (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/RIVER-140?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12516104 ] 

Jim Hurley commented on RIVER-140:
----------------------------------

Suggested Fix

Just after the class declaration of the JoinManager, is an "Implementation Note". This might be a candidate location for a description of theJoinManager's synchronization strategy.

> JoinManager synchronization strategy should be reviewed, documented, and fixed where appropriate
> ------------------------------------------------------------------------------------------------
>
>                 Key: RIVER-140
>                 URL: https://issues.apache.org/jira/browse/RIVER-140
>             Project: River
>          Issue Type: Improvement
>          Components: net_jini_lookup
>    Affects Versions: jtsk_2.1
>            Reporter: Jim Hurley
>            Priority: Minor
>
> Bugtraq ID [6219134|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6219134]
> To help avoid possible race conditions or even deadlock, the synchronization
> strategy employed by the JoinManager should be reviewed and documented.
> Having some idea of how the threads and tasks interact, and how (and
> why) access to shared data is controlled, should help with future 
> maintenance of JoinManager.
> Synchronization-related bugs discovered while addressing this bug should
> be filed and addressed separately.
> See the comments section for a list of the objects on which the JoinManager
> currently synchronizes.
> Comments
> All objects on which JoinManager synchronizes:
>      Object                        Scope of Object
> ------------------   -----------------------------------------------------
> ProxyReg.taskList    each proxyReg stored in joinSet has its own taskList
> joinSet              JoinManager
> JoinManager (this)   JoinManager
> taskMgr              JoinManager and taskMgr (and wakeupMgr?)
> wakeupMgr            JoinManager and wakeupMgr
> ProxyReg.this        each proxyReg stored in joinSet has its own taskList
> ProxyReg.fail() syncs on 'this'. Not sure if this is right. Should file a
> bug to investigate it.
> Also, may be able to simplify things by syncing on joinSet in the places
> where JoinManager itself is sync'd on (which is done only when trying to
> determine if the JoinManager has been terminated).

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