EJB - org.jboss.as.ejb3.pool.strictmax.StrictMaxUnitTestCase accidentally failed (race-condition?)

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

EJB - org.jboss.as.ejb3.pool.strictmax.StrictMaxUnitTestCase accidentally failed (race-condition?)

Pavel Janousek
Hi,

I've got for the first time (and only one) that testcase org.jboss.as.ejb3.pool.strictmax.StrictMaxUnitTestCase accidentally failed - see stacktrace bellow.

Because it is some multithread testcase, it is possible that this accident should be a race-condition error.

Could someone who is expert of this part of AS7 code review if there isn't really some issue?

Thanks

Pavel

-------------------------------------------------------------------------------                                                                                                                                                              
Test set: org.jboss.as.ejb3.pool.strictmax.StrictMaxUnitTestCase                                                                                                                                                                            
-------------------------------------------------------------------------------                                                                                                                                                              
Tests run: 3, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 3.067 sec <<< FAILURE!                                                                                                                                                      
testMultiThread(org.jboss.as.ejb3.pool.strictmax.StrictMaxUnitTestCase)  Time elapsed: 2.031 sec  <<< FAILURE!                                                                                                                              
junit.framework.AssertionFailedError: expected:<10> but was:<9>                                                                                                                                                                              
        at junit.framework.Assert.fail(Assert.java:50)                                                                                                                                                                                      
        at junit.framework.Assert.failNotEquals(Assert.java:287)                                                                                                                                                                            
        at junit.framework.Assert.assertEquals(Assert.java:67)                                                                                                                                                                              
        at junit.framework.Assert.assertEquals(Assert.java:199)                                                                                                                                                                              
        at junit.framework.Assert.assertEquals(Assert.java:205)                                                                                                                                                                              
        at org.jboss.as.ejb3.pool.strictmax.StrictMaxUnitTestCase.testMultiThread(StrictMaxUnitTestCase.java:117)                                                                                                                            
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)                                                                                                                                                                      
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)                                                                                                                                                    
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)                                                                                                                                            
        at java.lang.reflect.Method.invoke(Method.java:597)                                                                                                                                                                                  
        at junit.framework.TestCase.runTest(TestCase.java:168)                                                                                                                                                                              
        at junit.framework.TestCase.runBare(TestCase.java:134)                                                                                                                                                                              
        at junit.framework.TestResult$1.protect(TestResult.java:110)                                                                                                                                                                        
        at junit.framework.TestResult.runProtected(TestResult.java:128)                                                                                                                                                                      
        at junit.framework.TestResult.run(TestResult.java:113)                                                                                                                                                                              
        at junit.framework.TestCase.run(TestCase.java:124)                                                                                                                                                                                  
        at junit.framework.TestSuite.runTest(TestSuite.java:243)                                                                                                                                                                            
        at junit.framework.TestSuite.run(TestSuite.java:238)                                                                                                                                                                                
        at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)                                                                                                                                                    
        at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53)                                                                                                                                                    
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)                                                                                                                                          
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)                                                                                                                                                  
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)                                                                                                                                                                      
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)                                                                                                                                                    
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)                                                                                                                                            
        at java.lang.reflect.Method.invoke(Method.java:597)                                                                                                                                                                                  
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)                                                                                                                                    
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)                                                                                                                                  
        at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175)                                                                                                                                        
        at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107)                                                                                                                          
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68)                                                                                                                                                          
 

--
Pavel Janousek
Senior JBoss QA Engineer


_______________________________________________
jboss-as7-dev mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/jboss-as7-dev
Reply | Threaded
Open this post in threaded view
|

Re: EJB - org.jboss.as.ejb3.pool.strictmax.StrictMaxUnitTestCase accidentally failed (race-condition?)

Carlo de Wolf
Usually this would only happen on my hardware. :-)

This is a possibility. The test tries to run up 20 threads on a 10 sized
pool. In essence your run never got 10 instances going, but only 9.

What are your hardware specs?

Carlo

On 03/05/2012 02:17 PM, Pavel Janousek wrote:

> Hi,
>
> I've got for the first time (and only one) that testcase org.jboss.as.ejb3.pool.strictmax.StrictMaxUnitTestCase accidentally failed - see stacktrace bellow.
>
> Because it is some multithread testcase, it is possible that this accident should be a race-condition error.
>
> Could someone who is expert of this part of AS7 code review if there isn't really some issue?
>
> Thanks
>
> Pavel
>
> -------------------------------------------------------------------------------
> Test set: org.jboss.as.ejb3.pool.strictmax.StrictMaxUnitTestCase
> -------------------------------------------------------------------------------
> Tests run: 3, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 3.067 sec<<<  FAILURE!
> testMultiThread(org.jboss.as.ejb3.pool.strictmax.StrictMaxUnitTestCase)  Time elapsed: 2.031 sec<<<  FAILURE!
> junit.framework.AssertionFailedError: expected:<10>  but was:<9>
>          at junit.framework.Assert.fail(Assert.java:50)
>          at junit.framework.Assert.failNotEquals(Assert.java:287)
>          at junit.framework.Assert.assertEquals(Assert.java:67)
>          at junit.framework.Assert.assertEquals(Assert.java:199)
>          at junit.framework.Assert.assertEquals(Assert.java:205)
>          at org.jboss.as.ejb3.pool.strictmax.StrictMaxUnitTestCase.testMultiThread(StrictMaxUnitTestCase.java:117)
>          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>          at java.lang.reflect.Method.invoke(Method.java:597)
>          at junit.framework.TestCase.runTest(TestCase.java:168)
>          at junit.framework.TestCase.runBare(TestCase.java:134)
>          at junit.framework.TestResult$1.protect(TestResult.java:110)
>          at junit.framework.TestResult.runProtected(TestResult.java:128)
>          at junit.framework.TestResult.run(TestResult.java:113)
>          at junit.framework.TestCase.run(TestCase.java:124)
>          at junit.framework.TestSuite.runTest(TestSuite.java:243)
>          at junit.framework.TestSuite.run(TestSuite.java:238)
>          at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
>          at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53)
>          at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)
>          at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)
>          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>          at java.lang.reflect.Method.invoke(Method.java:597)
>          at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)
>          at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)
>          at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175)
>          at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107)
>          at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68)
>
>
> --
> Pavel Janousek
> Senior JBoss QA Engineer
>
>
> _______________________________________________
> jboss-as7-dev mailing list
> [hidden email]
> https://lists.jboss.org/mailman/listinfo/jboss-as7-dev

_______________________________________________
jboss-as7-dev mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/jboss-as7-dev
Reply | Threaded
Open this post in threaded view
|

Re: EJB - org.jboss.as.ejb3.pool.strictmax.StrictMaxUnitTestCase accidentally failed (race-condition?)

Pavel Janousek
----- Original Message -----
> From: "Carlo de Wolf" <[hidden email]>
>
> Usually this would only happen on my hardware. :-)

You caught me...:)

> What are your hardware specs?

IBM ThinkPad T510 with 8GiB RAM - and almost without my other activity during testsuite run (at least half of mem was free).

Pavel
_______________________________________________
jboss-as7-dev mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/jboss-as7-dev
Reply | Threaded
Open this post in threaded view
|

Re: EJB - org.jboss.as.ejb3.pool.strictmax.StrictMaxUnitTestCase accidentally failed (race-condition?)

jtgreene
Administrator
In reply to this post by Carlo de Wolf
The test is relying on Thread.sleep, which certainly explains the
behavior. A better version would have all in-use threads block on a
countdown latch, until the pool is full, then verify the max is effective.

On 3/5/12 7:28 AM, Carlo de Wolf wrote:

> Usually this would only happen on my hardware. :-)
>
> This is a possibility. The test tries to run up 20 threads on a 10 sized
> pool. In essence your run never got 10 instances going, but only 9.
>
> What are your hardware specs?
>
> Carlo
>
> On 03/05/2012 02:17 PM, Pavel Janousek wrote:
>> Hi,
>>
>> I've got for the first time (and only one) that testcase org.jboss.as.ejb3.pool.strictmax.StrictMaxUnitTestCase accidentally failed - see stacktrace bellow.
>>
>> Because it is some multithread testcase, it is possible that this accident should be a race-condition error.
>>
>> Could someone who is expert of this part of AS7 code review if there isn't really some issue?
>>
>> Thanks
>>
>> Pavel
>>
>> -------------------------------------------------------------------------------
>> Test set: org.jboss.as.ejb3.pool.strictmax.StrictMaxUnitTestCase
>> -------------------------------------------------------------------------------
>> Tests run: 3, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 3.067 sec<<<   FAILURE!
>> testMultiThread(org.jboss.as.ejb3.pool.strictmax.StrictMaxUnitTestCase)  Time elapsed: 2.031 sec<<<   FAILURE!
>> junit.framework.AssertionFailedError: expected:<10>   but was:<9>
>>           at junit.framework.Assert.fail(Assert.java:50)
>>           at junit.framework.Assert.failNotEquals(Assert.java:287)
>>           at junit.framework.Assert.assertEquals(Assert.java:67)
>>           at junit.framework.Assert.assertEquals(Assert.java:199)
>>           at junit.framework.Assert.assertEquals(Assert.java:205)
>>           at org.jboss.as.ejb3.pool.strictmax.StrictMaxUnitTestCase.testMultiThread(StrictMaxUnitTestCase.java:117)
>>           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>           at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>           at java.lang.reflect.Method.invoke(Method.java:597)
>>           at junit.framework.TestCase.runTest(TestCase.java:168)
>>           at junit.framework.TestCase.runBare(TestCase.java:134)
>>           at junit.framework.TestResult$1.protect(TestResult.java:110)
>>           at junit.framework.TestResult.runProtected(TestResult.java:128)
>>           at junit.framework.TestResult.run(TestResult.java:113)
>>           at junit.framework.TestCase.run(TestCase.java:124)
>>           at junit.framework.TestSuite.runTest(TestSuite.java:243)
>>           at junit.framework.TestSuite.run(TestSuite.java:238)
>>           at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
>>           at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53)
>>           at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)
>>           at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)
>>           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>           at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>           at java.lang.reflect.Method.invoke(Method.java:597)
>>           at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)
>>           at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)
>>           at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175)
>>           at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107)
>>           at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68)
>>
>>
>> --
>> Pavel Janousek
>> Senior JBoss QA Engineer
>>
>>
>> _______________________________________________
>> jboss-as7-dev mailing list
>> [hidden email]
>> https://lists.jboss.org/mailman/listinfo/jboss-as7-dev
>
> _______________________________________________
> jboss-as7-dev mailing list
> [hidden email]
> https://lists.jboss.org/mailman/listinfo/jboss-as7-dev


--
Jason T. Greene
JBoss AS Lead / EAP Platform Architect
JBoss, a division of Red Hat
_______________________________________________
jboss-as7-dev mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/jboss-as7-dev