The following comment has been added to this issue:

     Author: Johan Lindquist
    Created: Fri, 20 Aug 2004 12:38 AM
       Body:
Pulled the latest code out of CVS this morning and the test 
"TestServiceModelThreading" consistently fails with something like: 

[junit] Number of executions of the RunnableFixture expected:<200> but was:<198>

Looking at what the test does, I saw that you have put a comment on the run 
method of the RunnableFixture class saying that you don't have to synchronize 
the increment.  I'd say you do as the increment operation involves both a read 
AND a write, making it non-atomic.  Anyway, to cut it short, adding a 
synchronized block around the increment fixes the test ...  

Of course, I may be fixing the test rather than the problem, in which case 
ignore me :)

---------------------------------------------------------------------
View this comment:
  http://issues.apache.org/jira/browse/HIVEMIND-44?page=comments#action_37357

---------------------------------------------------------------------
View the issue:
  http://issues.apache.org/jira/browse/HIVEMIND-44

Here is an overview of the issue:
---------------------------------------------------------------------
        Key: HIVEMIND-44
    Summary: Race Conditions in Construction of Threaded Service
       Type: Bug

     Status: Closed
   Priority: Major
 Resolution: FIXED

    Project: HiveMind
 Components: 
             framework
   Versions:
             1.0

   Assignee: Howard M. Lewis Ship
   Reporter: Harald Meyer

    Created: Thu, 12 Aug 2004 11:03 AM
    Updated: Fri, 20 Aug 2004 12:38 AM
Environment: J2SDK 1.4.2, Windows XP, Eclipse, Log4J

Description:
Basically the problem occours when two threads simultaneously construct 
instances of threaded service.

You can reconstruct the bug, by creating 10-20 threads in a for loop, and let 
each of this threads call the threaded service. A stack trace similar to this 
should appear:

org.apache.hivemind.ApplicationRuntimeException: Unable to construct service 
Service.ThreadedService1: org.apache.hivemind.ApplicationRuntimeException
        at 
org.apache.hivemind.impl.servicemodel.ThreadedServiceModel.constructServiceForCurrentThread(ThreadedServiceModel.java:162)
        at 
org.apache.hivemind.impl.servicemodel.ThreadedServiceModel.getServiceImplementationForCurrentThread(ThreadedServiceModel.java:139)
        at 
$ThreadedProxy_fe54269949_6._service($ThreadedProxy_fe54269949_6.java)
        at $ThreadedProxy_fe54269949_6.foo($ThreadedProxy_fe54269949_6.java)
        at testing.bugs.TestCase1$1.run(TestCase1.java:50)


As this is time-critical problem it does not always happen. My observation is 
that the longer the construction of the service takes (e.g. a lot of (at least 
3-4) service properties) the more likely the problem occours. It also "helps" 
to have logging at debug level.

If neccessary I've got source code to reproduce the problem (but with SDL 
module descriptors). The same problem occours with pooled service module, too.

To fix this I guess constructServiceForCurrentThread() should be synchronized. 
From looking at the source code of getServiceImplementationForCurrentThread it 
seems like it has to be synchronized, too.


---------------------------------------------------------------------
JIRA INFORMATION:
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

If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to