[infinispan-issues] [JBoss JIRA] (ISPN-4085) Random failures in StateProviderTest due to race condition

Gustavo Fernandes (JIRA) issues at jboss.org
Sun Mar 9 05:29:33 EDT 2014


Gustavo Fernandes created ISPN-4085:
---------------------------------------

             Summary: Random failures in StateProviderTest due to race condition
                 Key: ISPN-4085
                 URL: https://issues.jboss.org/browse/ISPN-4085
             Project: Infinispan
          Issue Type: Bug
          Components: Test Suite - Core
    Affects Versions: 7.0.0.Alpha1
         Environment: jgroups.bind_addr = 127.0.0.1
java.runtime.version = 1.7.0_51-b13
java.runtime.name =Java(TM) SE Runtime Environment
java.vm.version = 24.51-b03
java.vm.vendor = Oracle Corporation
os.name = Mac OS X
os.version = 10.9.2
sun.arch.data.model = 64
sun.cpu.endian = little
protocol.stack = null
infinispan.test.jgroups.protocol = tcp
infinispan.unsafe.allow_jdk8_chm = true
java.net.preferIPv4Stack = true
java.net.preferIPv6Stack = null
log4.configuration = null
MAVEN_OPTS = null
            Reporter: Gustavo Fernandes
            Assignee: Dan Berindei


In my environment the StateProviderTest .test2() fails sometimes (about 10% of the time) with the following error(s):

{code}
Tests run: 4233, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 428.06 sec <<< FAILURE!
test2(org.infinispan.statetransfer.StateProviderTest)  Time elapsed: 0.042 sec  <<< FAILURE!
java.lang.AssertionError
	at org.junit.Assert.fail(Assert.java:92)
	at org.junit.Assert.assertTrue(Assert.java:43)
	at org.junit.Assert.assertTrue(Assert.java:54)
	at org.infinispan.statetransfer.StateProviderTest.test2(StateProviderTest.java:316)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
{code}

The reason why is that test2() feeds the StateProvider  a ThreadPoolExecutorService to execute a OutboundTransfer task asynchronously and right after forcing a state transfer 
asserts that there is a StateTransfer in progress. Sometimes the executor service manages to execute the task and as a result it clear the ‘transfersByDestination’ map, and thus the test cannot assert that the state transfer is happening 

OTOH, the method test1() never fails because it users a mock executor service which never executes the task, so the state transfer map will always contain the outbound task after initiating the state transfer and thus always visible from outside

The quick fix is to also use a mock executor test for the test2()



--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira



More information about the infinispan-issues mailing list