Bug 1182678

Summary: DistributedExecutorService ignores unsuccessful responses
Product: [JBoss] JBoss Data Grid 6 Reporter: Dan Berindei <dberinde>
Component: InfinispanAssignee: Tristan Tarrant <ttarrant>
Status: CLOSED CURRENTRELEASE QA Contact: Martin Gencur <mgencur>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 6.4.0CC: jdg-bugs, vjuranek
Target Milestone: CR2   
Target Release: 6.4.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Dan Berindei 2015-01-15 17:28:32 UTC
I got a failure in DistributedExecutorFailureTest (master only) on my machine because the distributed executor ignores CacheNotFoundResponse responses:

15:18:45,516 TRACE (transport-thread-NodeA-p30129-t4:) [CommandAwareRpcDispatcher] Response: CacheNotFoundResponse
15:18:45,516 TRACE (transport-thread-NodeA-p30129-t4:) [RpcManagerImpl] Response(s) to DistributedExecuteCommand [cache=null, keys=[], callable=org.infinispan.distexec.DistributedExecutorFailoverTest$SleepingSimpleCallable@23a9b62a] is {NodeB-4305=CacheNotFoundResponse}
15:18:45,517 ERROR (testng-DistributedExecutorFailoverTest:) [UnitTestTestNGListener] Test testBasicTargetRemoteDistributedCallable(org.infinispan.distexec.DistributedExecutorFailoverTest) failed.
java.lang.AssertionError: expected:<1> but was:<null>
	at org.testng.AssertJUnit.fail(AssertJUnit.java:59)
	at org.testng.AssertJUnit.failNotEquals(AssertJUnit.java:364)
	at org.testng.AssertJUnit.assertEquals(AssertJUnit.java:80)
	at org.testng.AssertJUnit.assertEquals(AssertJUnit.java:88)
	at org.infinispan.distexec.DistributedExecutorFailoverTest.testBasicTargetRemoteDistributedCallable(DistributedExecutorFailoverTest.java:74)

RemoteDistributedTaskPart.retrieveResult() ignores any response that's not a SuccessfulResponse and returns null. It should throw an exception instead, so that the failover policy can retry it on another node.