You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "ASF GitHub Bot (Jira)" <ji...@apache.org> on 2020/06/03 13:51:00 UTC

[jira] [Commented] (GEODE-8127) redis function+delta may not always execute function on primary

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

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

jdeppe-pivotal opened a new pull request #5205:
URL: https://github.com/apache/geode/pull/5205


   Thank you for submitting a contribution to Apache Geode.
   
   In order to streamline the review of the contribution we ask you
   to ensure the following steps have been taken:
   
   ### For all changes:
   - [ ] Is there a JIRA ticket associated with this PR? Is it referenced in the commit message?
   
   - [ ] Has your PR been rebased against the latest commit within the target branch (typically `develop`)?
   
   - [ ] Is your initial contribution a single, squashed commit?
   
   - [ ] Does `gradlew build` run cleanly?
   
   - [ ] Have you written or updated unit tests to verify your changes?
   
   - [ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under [ASF 2.0](http://www.apache.org/legal/resolved.html#category-a)?
   
   ### Note:
   Please ensure that once the PR is submitted, check Concourse for build issues and
   submit an update to your PR as soon as possible. If you need help, please send an
   email to dev@geode.apache.org.
   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


> redis function+delta may not always execute function on primary
> ---------------------------------------------------------------
>
>                 Key: GEODE-8127
>                 URL: https://issues.apache.org/jira/browse/GEODE-8127
>             Project: Geode
>          Issue Type: Bug
>          Components: redis
>            Reporter: Darrel Schneider
>            Assignee: Jens Deppe
>            Priority: Major
>
> The redis use of regions depends on the code that will modify the region that is storing redis data, to always execute on the primary. It thought it was accomplishing this by marking the function as "optimizeForWrite=true" and by routing the function to the node with the bucket using "withFilter(key)". This works most of the time. But in some cases the function executes on a redundant copy. It looks like what is happening is that at the time the function is dispatched it has one idea of who the primary is and sends the function to that node. But before it executes the primary moves from this node to another that is doing redundancy recovery. Then when our function finally does a "put" on the localDataSet it ends up being a remote operation that is sent to the other node.
> If our redis function could get a lock that prevents the bucket primary status from changing (see BucketRegion doLockForPrimary) and then check to see if we are the primary (if not throw an exception that causes the function sender to retry  (see BucketMovedException) otherwise execute the function and at the end release the lock (see BucketRegion doUnlockForPrimary).
> We could enable this with a new method added to Function (much like the existing isHA and optimizeForWrite). This new method could be executeOnPrimary and default to false (adding a default method to the Function interface will not cause backwards compatibility issues unless a current class that implements Function already had added a method named "executeOnPrimary").



--
This message was sent by Atlassian Jira
(v8.3.4#803005)