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

ASF subversion and git services commented on GEODE-9248:
--------------------------------------------------------

Commit b12b8f6102bdb3d449fd994351f6ceddd2ace418 in geode's branch 
refs/heads/develop from Jakov Varenina
[ https://gitbox.apache.org/repos/asf?p=geode.git;h=b12b8f6 ]

GEODE-9248: Server hosting CQ queue uneccessary fills bucketToTempQueue (#6646)


Issue reproduces when following conditions are fulfilled:

 - Redundant partition region must be configured
 - Number of servers must be greater than number of redundant copies of 
partition region
 - Parallel gateway sender must be configured on partition region
 - Client must register CQs for the region
 - Transactions must be used with put operations
 - Events must be enqueued in parallel gateway senders (remote site is 
unavailable)

Server that is hosting primary bucket will send TXCommitMessage to the secondary
server, and also to the server that is hosting CQ subscription queue (if CQ 
condition is fulfilled).
The problem occurs when the server that is hosting CQ subscription queue does 
not host
the bucket for which event is received. In that case the server will store the 
event in
bucketToTempQueueMap, because it assumes that the bucket is in the process of 
the
creation, which is not correct.

The solution:

At reception of CommitProcessForTXIdMessage the events received with 
TXCommitMessage will not
be stored in temporary queue, if targeted bucket region is not hosted in the 
server. Following
checks are performed on receiving server in order to identify those events:

1. Check that targeted bucket region in not available locally on server
2. Check from filterRoutingInfo that the receiving server hosts 
CQ/RegionInterests queue for that event

If above checks are fulfilled then tailKey is set to -1 on receiving server to 
avoid enqueuing of
event in temporary queue.

Co-authored-by: Jakov Varenina <[email protected]>

> Server hosting cq subscription queue uneccessary fills bucketToTempQueueMap 
> while in multi site split brain
> -----------------------------------------------------------------------------------------------------------
>
>                 Key: GEODE-9248
>                 URL: https://issues.apache.org/jira/browse/GEODE-9248
>             Project: Geode
>          Issue Type: Bug
>            Reporter: Jakov Varenina
>            Assignee: Jakov Varenina
>            Priority: Major
>              Labels: pull-request-available
>
> The problem reproduces when you use transactions and have more servers than 
> redundant copies of the partition region, and also events are queued in 
> parallel gateway-senders due to ongoing multi-site split brain. In this case 
> all members send events to the member with subscription queue, which then 
> fills variable *bucketToTempQueueMap* with traffic intended for the buckets 
> that it doesn't host.



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

Reply via email to