jvarenina commented on pull request #6477:
URL: https://github.com/apache/geode/pull/6477#issuecomment-846037604


   Hi all,
   
   I have been able to find the case when events are enqueued in 
bucketToTempQueue. The case if following:
   
      1. Configure partition region on multiple servers
      2. Run traffic with puts
      3.  Stop one of the servers and then perform "rebalance" operation (this 
is also done while traffic is running)
   
   In this case running servers will become owners of the buckets from the 
member that has been shut down. In this case events are enqueued in temporary 
queue (bucketToTempQueue) while server is performing "Get Initial Image" (GII) 
operation from primary server. This current solution breaks this design base 
behavior, because it doesn't store events in temporary queue during this period 
of GII. The problem with solution is following:
   
   ```
               } else if 
(!prQ.getColocatedWithRegion().getRegionAdvisor().getBucketOwners(bucketId)
                   .contains(prQ.getCache().getMyId())) {
                 if (isDebugEnabled) {
                   logger.debug(
                       "ParallelGatewaySenderOrderedQueue not putting key {} : 
Value : {} as bucket is not hosted locally.",
                       key, value);
                 }
   ```
   
   `getColocatedWithRegion().getRegionAdvisor().getBucketOwners(bucketId) `- 
code only returns primary server ID during GII process, and not the server that 
it copying the bucket and taking ownership over the secondary the bucket.
   
   Sorry for missing this case. I will try to find different solution. Any 
advice from your side is welcome.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to