You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "xiaojian zhou (JIRA)" <ji...@apache.org> on 2018/09/11 22:16:00 UTC

[jira] [Assigned] (GEODE-5729) when DistributedCacheOperation needs 2 messages, should let the notifyOnly message to trigger callback

     [ https://issues.apache.org/jira/browse/GEODE-5729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

xiaojian zhou reassigned GEODE-5729:
------------------------------------

    Assignee: xiaojian zhou

> when DistributedCacheOperation needs 2 messages, should let the notifyOnly message to trigger callback
> ------------------------------------------------------------------------------------------------------
>
>                 Key: GEODE-5729
>                 URL: https://issues.apache.org/jira/browse/GEODE-5729
>             Project: Geode
>          Issue Type: Bug
>            Reporter: xiaojian zhou
>            Assignee: xiaojian zhou
>            Priority: Major
>
> When one of the secondary bucket is still initializing (in middle of GII), the primary member call adviseRequiresTwoMessages() will return not null, i.e. PutAll will send both PutAllMessage and PutAllPRMessage(notifyOnly==true) to that member.
> Then it might cause to send the same event 2 times to the secondary serial gateway queue. There's race that the primary serial gateway queue finished processing the event before one of (or all of) the 2 duplicated events at secondary serial gateway queue, the one was enqueued after the processing primary event will be replayed.
> When considering the fix, we have to keep the twoMessage design, and we cannot guarantee that when the PutAllPRMessage(notifyOnly==true) is sent, the secondary bucket will be ready.
> I find a work around:
> The reason we need to send both PutAllMessage and PutAllPRMessage to the member is: we need the PutAllMessage to do apply distribution if region is ready, and also trigger call back if region is ready. But the PutAllPRMessage will trigger callbacks anyway even region is not ready
> So when I detect there're overlap in the 2 sets of recipients, I can set event to be inhibitAllNotifications for PutAllMessage to let it only apply distribution.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)