jvarenina edited a comment on pull request #6477:
URL: https://github.com/apache/geode/pull/6477#issuecomment-848723153


   Hi @DonalEvans and all,
   
   Thanks for the review!
   
   Regarding your question whether it is possible to check on receiving member 
if is notification only. I have already tried that with previous commit 
https://github.com/apache/geode/pull/6477/commits/b3dbf5024dd378ef1bbb48658cf02500b6cff6c9
  which broke design base case explained in this comment: 
https://github.com/apache/geode/pull/6477#issuecomment-846037604
   
   Beside above solution I was considering another alternative solution on 
receiving member. When TXCommitMessage is received on member which doesn't host 
targeted bucket (only subscription queue) then part of code within following if 
statement is executed :
   
   
https://github.com/apache/geode/blob/be1fad39c4f7291ad37051ba1e59046f8c52537e/geode-core/src/main/java/org/apache/geode/internal/cache/TXCommitMessage.java#L1300
   
   Impact (set TailKey to -1) could be done within to avoid putting the event 
in parallel gateway sender temporary queue. I haven't done it because I was 
unsure of the case that is described in following comment (open link since it 
has multiple lines):
   
   
https://github.com/apache/geode/blob/be1fad39c4f7291ad37051ba1e59046f8c52537e/geode-core/src/main/java/org/apache/geode/internal/cache/TXCommitMessage.java#L1323
   
   In comment it is stated that this part of code can be also reached while 
data bucket (colocated parallel gateway-sender queue bucket is always created 
after data bucket) is being created and `TXCommitMessage` message is received. 
I couldn't been able to get this case, and I'm not sure that it is possible. I 
tried to execute transactions before member requests for data bucket 
`InitialImageOperation$RequestRVVMessage` (this is done even before GII) and in 
this case `if (this.internalRegion instanceof PartitionedRegion)` condition is 
not fulfilled because targeted BucketRegion is at this point of time already 
created and therefore `internalRegion` variable is of type `BucketRegion` and 
not `PartitionedRegion`.
   
   Based on all above, at least to me, it seems that impact could be created on 
receiving member. Also I guess that even if it happens that some parallel 
gateway-sender events are ignored in period before` 
InitialImageOperation$RequestRVVMessage` (for data bucket region) everything 
should be fine, because these gateway-sender events should be transferred later 
on in initial image for colocated gateway-sender queue bucket.
   
   To be honest I'm not experienced in this part and I'm probably missing 
something. What do you think? Is this better solution? Any other suggestion 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