]
Mircea Markus updated ISPN-4085:
--------------------------------
Assignee: Galder Zamarreño (was: Gustavo Fernandes)
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: Galder Zamarreño
Labels: 630
Fix For: 7.0.0.Alpha2, 7.0.0.Final
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: