You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Anilkumar Gingade (Jira)" <ji...@apache.org> on 2021/04/07 22:14:00 UTC

[jira] [Created] (GEODE-9132) PR clear to take locks on all buckets unconditionally.

Anilkumar Gingade created GEODE-9132:
----------------------------------------

             Summary: PR clear to take locks on all buckets unconditionally.
                 Key: GEODE-9132
                 URL: https://issues.apache.org/jira/browse/GEODE-9132
             Project: Geode
          Issue Type: Sub-task
          Components: regions
    Affects Versions: 1.15.0
            Reporter: Anilkumar Gingade


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:
{code}
boolean acquireClearLockForNotification =
          (partitionedRegion.hasAnyClientsInterested() || partitionedRegion.hasListener());
{code}
And it will call:
{code}
obtainLockForClear(regionEvent);
{Code}

Also remove the logic taking lock in individual nodes in:
DistributedRegion.obtainWriteLocksForClear()
Remove:
if (!localLockedAlready) {
      lockLocallyForClear(getDistributionManager(), getMyId(), regionEvent);
    }






 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)