public void unlock() {
      if (lockOwned) {
        try {
          lockService.unlock(lockName);
        } catch (LockServiceDestroyedException e) {
          // cache was probably closed which destroyed this lock service
          // note: destroyed lock services release all held locks
          cache.getCancelCriterion().checkCancelInProgress(null);
          if (logger.isDebugEnabled()) {
            logger.debug("BucketLock#unlock: Lock service {} was destroyed", lockService, e);
          }
        } finally {
          lockOwned = false;
        }
      }
    }
Ask the grantor who has the lock

@return the ID of the member holding the lock
geode-core/src/main/java/org/apache/geode/internal/cache/PartitionedRegion.java