[ https://issues.apache.org/jira/browse/GEODE-8455?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17188292#comment-17188292 ]
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)