Details
-
Improvement
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
jtsk_2.1
-
None
-
6219134
Description
Bugtraq 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).