geode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (GEODE-2870) BucketMovedException during function execution may lead to client missing results
Date Wed, 03 May 2017 21:13:04 GMT

    [ 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 <huynhja@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)

Mime
View raw message