[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