[jira] Updated: (JCS-69) Synchronization Problem in JCSWorker

"Scott Archer (JIRA)" <[email protected]> Thu, 15 Oct 2009 13:07:31 -0700 (PDT)
Newsgroups gmane.comp.jakarta.turbine.jcs.devel
Message-ID <170722070.1255637251513.JavaMail.jira@brutus>
     [ https://issues.apache.org/jira/browse/JCS-69?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Scott Archer updated JCS-69:
----------------------------

    Attachment: cache.ccf
                JCSTest.java

This class reproduces the problem.

> 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
>         Attachments: cache.ccf, JCSTest.java
>
>
> 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.