[
https://issues.apache.org/jira/browse/GEODE-5729?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16615341#comment-16615341
]
ASF subversion and git services commented on GEODE-5729:
--------------------------------------------------------
Commit 49eb1c5fd13aefff0995d76ec7864c82d5730dd8 in geode's branch
refs/heads/develop from Xiaojian Zhou
[ https://gitbox.apache.org/repos/asf?p=geode.git;h=49eb1c5 ]
GEODE-5729: when DistributedCacheOperation needs 2 messages, should let (#2458)
the notifyOnly message to trigger callbacks
And computeCompressedShort should not pack inhibitAllNotifications
> 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
> Labels: pull-request-available
> Time Spent: 20m
> Remaining Estimate: 0h
>
> 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)