Jason Huynh created GEODE-2870:
----------------------------------
Summary: BucketMovedException during function execution may lead
to client missing results
Key: GEODE-2870
URL: https://issues.apache.org/jira/browse/GEODE-2870
Project: Geode
Issue Type: Bug
Components: functions
Reporter: Jason Huynh
If a function isHA and hasResult, if checkForBucketMovement() throws the
BucketMovedException, this escapes the synchronized lastResult() method.
Propogating this to through the user function.
Hopefully the user function does something appropriate or allows it to
propagate to AbstractExecution.executeFunctionLocally(), which hands it to
handleException. Here is where the exception is written back to the client.
However, because we have now escaped the synchronized method, the thread can be
paused.
A remote execution returns with results and now enters the synchronized
lastResult() method. The state flags have been set and now this result is
considered the last result and lastResult is now sent. We end up not retrying
even though the local node had failed. It just hadn't had the opportunity to
send the exception back.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)