tree ac6e56375b7e34049469230fe7eca22525ddaf73
parent 160847e56d4d09b641093980ef7add3d969bfdb9
author Nabarun Nag <nabarunnag@users.noreply.github.com> 1607556505 -0800
committer GitHub <noreply@github.com> 1607556505 -0800
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJf0V2ZCRBK7hj4Ov3rIwAAdHIIAIjSaieWzgx07wLxPnX27CxS
 GCMCLyunRQCw4CtzZeQBtxcmA4GYLat+CbqKahbC3pJ3SGNMs5xcOIVo5IcD0vrN
 NDnX2DD1/g/vhPEm8MAlCVx3ESoRPEBOoWiP9FpEZjQ3yklCNWrW5PyF5pH2bpuK
 aQtefuhhRLOVb0dVyoK4+ytW42vViv9sXgrY3rufqlcrOiaZ+bdY1YVvN6vDeh9V
 MTJjIhHLNqvV6o3c7JDfzdZC+fxTYxAEzvrk0sL9+gZxuaSjLr+ATau6QZCQNyon
 LqJFZKqZOeIJ+jDvvpwEuPkK+QhB02rzE9ClKbMZJL0BW52BPkCT9xwiQox3wnk=
 =W3ei
 -----END PGP SIGNATURE-----
 

GEODE-8745: Handle race between batch destroy msg and sec event. (#5821)

  
   * Primary serial sender receives an event but the sender is not running yet. Hence it has to drop the event.
   * Primary has to inform the secondary to remove the event from the unprocessedEventsMap.
   * It has to do that because the event is dropped and the cache listener on the secondary queue will not be triggered to remove it.
   * Hence, the primary sends BatchDestroyOperation to the secondary with the tail key set to -1 to trigger removal from unprocessedEventMap.
   * There is a race in which the BatchDestroyOperation arrives before the secondary event.
   * In this case the event is never removed from the unprocessedEventsMap.
   * In this fix, if this happens the event ID is placed in the unprocessedTokensMap.
   * So, when the secondary event arrives, it checks the unprocessedTokensMap and then realizes that the primary has seen the event and there is no need to place the event in the unprocessedEventsMap.

