void releaseIfLocked(Object name, InternalDistributedMember owner, int lockId)
      throws InterruptedException {
    waitWhileInitializing();
    if (!acquireDestroyReadLock(0)) {
      waitUntilDestroyed();
      checkDestroyed();
    }
    try {
      checkDestroyed();
      getAndReleaseGrantIfLockedBy(name, owner, lockId);
    } finally {
      releaseDestroyReadLock();
    }
  }
Release named lock if held by owner using lockId. Called from DLockReleaseMessage.basicProcess
for remote unlock.
<p>
Acquires destroyReadLock. Synchronizes on grantTokens and the grant token.

@param name the name of the lock to release
@param owner the member releasing the lock
@param lockId the identity of the lease used by the owner
@throws LockGrantorDestroyedException if grantor is destroyed
geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DLockGrantor.java