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

Alberto Gomez updated GEODE-8455:
---------------------------------
    Description: 
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.

  was:
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 
(GatewaySenderEven) 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.


> 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)

Reply via email to