jinmeiliao opened a new pull request, #7628: URL: https://github.com/apache/geode/pull/7628
Problem: When server2 initializes at the same time as client register CQ while connected to server1, when below sequence happened, server2 will have a wrong idea what cq server1 should serve: 1. server2 creates the partitioned region and sends a CreateRegionMessage to server1 2. server1 process this message and adds server2 to its profile list 3. server1 reply to server2 with a CreateRegionReplyMessage 4. At thee same time server1 does register cq locally and send a REGISTER_CQ message to server2 5. REGISTER_CQ message reaches server2, server2 doesn't have server1's cache profile yet, so it wants to save the message to the "to_be_processed" queue, but get stuck there. 6. meanwhile, the CreateRegionReplyMessage in #3 reaches server2, server2 now has server1's cache profile, processed the message and then processed everything in the "to_be_processed" queue. 7. Now #5 gets unstuck and continues, adds the message to the queue, but the queue is never processed again, so now in server2's viewpoint, server1 is not serving that CQ. Solution: When we are at step 5, synchronize on the advisor so that 5 finishes before 6 or completely after 6. -- 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. To unsubscribe, e-mail: notifications-unsubscr...@geode.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org