]
Dan Berindei updated ISPN-12710:
--------------------------------
Status: Open (was: New)
IllegalArgumentException in VoidResponseCollector: Self-suppression
not permitted
---------------------------------------------------------------------------------
Key: ISPN-12710
URL:
https://issues.redhat.com/browse/ISPN-12710
Project: Infinispan
Issue Type: Bug
Components: Core
Reporter: Dan Berindei
Assignee: Dan Berindei
Priority: Major
Fix For: 12.1.0.Final
Since the ISPN-12662 fix
{{ConsistentReliabilitySplitBrainTest.testLockUseAfterPartitionWithMajority}} is failing
in CI:
{noformat}
16:24:32,401 ERROR (testng-Test:[]) [TestSuiteProgress] Test failed:
org.infinispan.lock.ConsistentReliabilitySplitBrainTest.testAutoReleaseIfLockIsAcquiredFromAMinorityPartition[DENY_READ_WRITES]
java.lang.Error: java.util.concurrent.ExecutionException:
org.infinispan.lock.exception.ClusteredLockException:
org.infinispan.remoting.RemoteException: ISPN000217: Received exception from Test-NodeD,
see cause for remote stack trace
at org.infinispan.functional.FunctionalTestUtils.await(FunctionalTestUtils.java:67)
~[infinispan-core-12.1.0-SNAPSHOT-tests.jar:12.1.0-SNAPSHOT]
at
org.infinispan.lock.ConsistentReliabilitySplitBrainTest.testAutoReleaseIfLockIsAcquiredFromAMinorityPartition(ConsistentReliabilitySplitBrainTest.java:133)
~[test-classes/:?]
{noformat}
That fix replaced a usage of {{MapResponseCollector}} with {{VoidResponseCollector}},
which makes sense because the response values are ignored. The problem is that
{{VoidResponseCollector}} tries to keep track of the exceptions received from all the
targets by adding them as suppressed exceptions to the first received exception, and
{{ThrowableExternalizer}} reuses {{OutdatedTopologyException}} instances, causing an
{{IllegalArgumentException}}:
{noformat}
16:24:32,380 ERROR (jgroups-12,Test-NodeD:[]) [InvocationContextInterceptor] ISPN000136:
Error executing command ReadWriteKeyCommand on Cache 'org.infinispan.LOCKS',
writing keys [ClusteredLockKey{name=Test}]
java.lang.IllegalArgumentException: Self-suppression not permitted
at java.lang.Throwable.addSuppressed(Throwable.java:1066) ~[?:?]
at
org.infinispan.remoting.transport.impl.VoidResponseCollector.recordException(VoidResponseCollector.java:54)
~[infinispan-core-12.1.0-SNAPSHOT.jar:12.1.0-SNAPSHOT]
at
org.infinispan.remoting.transport.impl.VoidResponseCollector.addException(VoidResponseCollector.java:46)
~[infinispan-core-12.1.0-SNAPSHOT.jar:12.1.0-SNAPSHOT]
at
org.infinispan.remoting.transport.impl.VoidResponseCollector.addException(VoidResponseCollector.java:18)
~[infinispan-core-12.1.0-SNAPSHOT.jar:12.1.0-SNAPSHOT]
at
org.infinispan.remoting.transport.ValidResponseCollector.addResponse(ValidResponseCollector.java:29)
~[infinispan-core-12.1.0-SNAPSHOT.jar:12.1.0-SNAPSHOT]
at
org.infinispan.remoting.transport.impl.MultiTargetRequest.onResponse(MultiTargetRequest.java:92)
[infinispan-core-12.1.0-SNAPSHOT.jar:12.1.0-SNAPSHOT]
at
org.infinispan.remoting.transport.impl.RequestRepository.addResponse(RequestRepository.java:51)
[infinispan-core-12.1.0-SNAPSHOT.jar:12.1.0-SNAPSHOT]
at
org.infinispan.remoting.transport.jgroups.JGroupsTransport.processResponse(JGroupsTransport.java:1407)
[infinispan-core-12.1.0-SNAPSHOT.jar:12.1.0-SNAPSHOT]
{noformat}