[ 
https://issues.apache.org/jira/browse/GEODE-2870?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15995694#comment-15995694
 ] 

ASF GitHub Bot commented on GEODE-2870:
---------------------------------------

GitHub user jhuynh1 opened a pull request:

    https://github.com/apache/geode/pull/491

    GEODE-2870: Local node function execution failure correctly returns e…

    …xception
    
    * Race condition and escaping synchronized block led to function possibly 
missing results
    * It was possible a remote node would enter the synchronized block after 
local node threw exception
    * Certain side effects would allow processing of remote node results to be 
considered last result
    * Local processing thread would be paused/non active and miss opportunity 
to write exception
    * This would manifest as incomplete results instead of a retry
    
    Reviewers:
    @upthewaterspout @nabarunnag @gesterzhou @boglesby @ladyVader 

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/apache/geode feature/GEODE-2870

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/geode/pull/491.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #491
    
----
commit d7671df8788fa926967ef35a71b95b21ffd41726
Author: Jason Huynh <huyn...@gmail.com>
Date:   2017-05-02T23:30:46Z

    GEODE-2870: Local node function execution failure correctly returns 
exception
    
    * Race condition and escaping synchronized block led to function possibly 
missing results
    * It was possible a remote node would enter the synchronized block after 
local node threw exception
    * Certain side effects would allow processing of remote node results to be 
considered last result
    * Local processing thread would be paused/non active and miss opportunity 
to write exception
    * This would manifest as incomplete results instead of a retry

----


> 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
>    Affects Versions: 1.1.0
>            Reporter: Jason Huynh
>            Assignee: 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 issue has probably been in the product for a long time.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to