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 subversion and git services (Jira)" <ji...@apache.org> on 2020/09/01 09:21:00 UTC

[jira] [Commented] (GEODE-8455) Different behavior in transactions on partitioned regions between creating the region with a parallel gateway sender vs altering the region to add the parallel gateway sender

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

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

Commit 304e4d5857fc7539c054713e6eaddb0e74ea01d8 in geode's branch refs/heads/develop from Alberto Gomez
[ https://gitbox.apache.org/repos/asf?p=geode.git;h=304e4d58 ]

GEODE-8455: Fix difference between create region with gw sender and a… (#5476)

* GEODE-8455: Fix difference between create region with gw sender and alter region with gw sender

Geode behaves differently with respect to transactions when
creating a partitioned region with a parallel gateway sender to
when first the partitioned region is created and then the
parallel gateway sender is added by altering the region.

In the first case (create region with gateway sender), when
sending a transaction for the region, an event is sent
to each server hosting the bucket for the data in the transaction.

In the second case (create region + alter region),
when sending a transaction for the region, an event
is sent to every cache member and not only to those hosting
the bucket for the data in the transaction. This leads to,
in the servers not hosting the bucket for the data,
that the events are stored in the
bucketToTempQueueMap member variable of the
ParallelGatewaySenderQueue.

The behavior in the first case is the right one.

The wrong behavior is provoked by the setting to true of the
requiresNotification variable of the PartitionedRegion
by the distributeUpdatedProfileOnSenderCreation method.
This method should only set this variable to true
in case the sender is serial as it is done when
a partitioned region is initialized.

* feature/GEODE-8455: Fix bug shown in dist tests and minor changes after review

* GEODE-8455: Remove unused parameter from helper method in WANTestBase support test class

> Different behavior in transactions on partitioned regions between creating the region with a parallel gateway sender vs altering the region to add the parallel gateway sender
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: GEODE-8455
>                 URL: https://issues.apache.org/jira/browse/GEODE-8455
>             Project: Geode
>          Issue Type: Bug
>          Components: core
>            Reporter: Alberto Gomez
>            Assignee: Alberto Gomez
>            Priority: Major
>              Labels: pull-request-available
>
> When creating a partitioned region and then altering it by adding a parallel gateway sender, I have observed that, when sending transactions to the partitioned region, an event (GatewaySenderEvent) for each transaction is sent to every server hosting buckets for the partitioned region and not only to that/those hosting the bucket where the data in the transaction belongs.
> So, for example, in a partitioned region provided by two cache servers where redundancy is zero, when a transaction is sent, the put is done on the server hosting the bucket where the data in the transaction is to be stored but an event for the put is sent to the two members. This provokes in the server not hosting locally the bucket for the data in the event that the event (GatewaySenderEvent) is stored in the bucketToTempQueueMap member variable of the ParallelGatewaySenderQueue.
> Those events are eventually removed from that member as events are sent by the gateway sender to the remote site. Nevertheless, if the remote site cannot be reached, the events are kept in that member which could provoke a heap exhaustion problem if there is a sufficient amount of incoming transactions and the remote site cannot be reached for the required amount of time.
> Events for a transaction should only be sent to the servers hosting the bucket for the data in the transaction and not to all servers.



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