[ https://issues.apache.org/jira/browse/JCS-69?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Scott Archer updated JCS-69: ---------------------------- Description: When using the JCSWorker threads lock indefinitely. I believe the synchronized block in the finally block is synchronizing on and notifying the wrong object. Once a thread locks it never unlocks. Class: org.apache.jcs.utils.access.JCSWorker Method: private Object run( Serializable aKey, String aGroup, JCSWorkerHelper aHelper ) throws Exception Bad Code (in finally block): synchronized ( this ) { aHelper.setFinished( true ); // Wake everyone waiting on us notifyAll(); } Suggested Fix: synchronized ( aHelper ) { aHelper.setFinished( true ); // Wake everyone waiting on aHelper aHelper.notifyAll(); } was: When using the JCSWorker threads lock indefinitely. I believe the synchronized block in the finally block is synchronizing on the wrong object. Once a thread locks it never unlocks. Class: org.apache.jcs.utils.access.JCSWorker Method: private Object run( Serializable aKey, String aGroup, JCSWorkerHelper aHelper ) throws Exception Bad Code (in finally block): synchronized ( this ) { aHelper.setFinished( true ); // Wake everyone waiting on us notifyAll(); } Suggested Fix: synchronized ( aHelper ) { aHelper.setFinished( true ); // Wake everyone waiting on aHelper aHelper.notifyAll(); } > Synchronization Problem in JCSWorker > ------------------------------------ > > Key: JCS-69 > URL: https://issues.apache.org/jira/browse/JCS-69 > Project: JCS > Issue Type: Bug > Affects Versions: jcs-1.3, jcs-1.4-dev > Environment: Linux 2.6.28-15-generic #52-Ubuntu SMP Wed Sep 9 > 10:48:52 UTC 2009 x86_64 GNU/Linux > java version "1.6.0_16" > Java(TM) SE Runtime Environment (build 1.6.0_16-b01) > Java HotSpot(TM) 64-Bit Server VM (build 14.2-b01, mixed mode) > Reporter: Scott Archer > Assignee: Aaron Smuts > > When using the JCSWorker threads lock indefinitely. > I believe the synchronized block in the finally block is synchronizing on and > notifying the wrong object. > Once a thread locks it never unlocks. > Class: org.apache.jcs.utils.access.JCSWorker > Method: private Object run( Serializable aKey, String aGroup, JCSWorkerHelper > aHelper ) throws Exception > Bad Code (in finally block): > synchronized ( this ) > { > aHelper.setFinished( true ); > // Wake everyone waiting on us > notifyAll(); > } > Suggested Fix: > synchronized ( aHelper ) > { > aHelper.setFinished( true ); > // Wake everyone waiting on aHelper > aHelper.notifyAll(); > } -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: jcs-dev-unsubscr...@jakarta.apache.org For additional commands, e-mail: jcs-dev-h...@jakarta.apache.org