Details
-
Sub-task
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
Description
Existing behavior:
PR clear employs two different locking behavior based on the presence of client subscription and cache-listeners. If there is no subscription or cache-listener it takes the bucket locks on local nodes else it will send a message to take locks on all buckets before doing the clear.
Expected behavior:
To keep the code/behavior simple PR clear to employ single locking behavior. It will take the lock on all buckets before doing clear irrespective of subscription or cache-listener presence.
Solution:
Remove the following check that drives taking lock on local nodes:
boolean acquireClearLockForNotification =
(partitionedRegion.hasAnyClientsInterested() || partitionedRegion.hasListener());
And it will call:
obtainLockForClear(regionEvent);
Also remove the logic taking lock in individual nodes in:
DistributedRegion.obtainWriteLocksForClear()
Remove:
if (!localLockedAlready)