question: void releaseIfLocked ( Object name , InternalDistributedMember owner , int lockId ) throws InterruptedException { waitWhileInitializing ( ) ; if ( ! acquireDestroyReadLock ( 0 ) ) { waitUntilDestroyed ( ) ; checkDestroyed ( ) ; } try { checkDestroyed ( ) ; getAndReleaseGrantIfLockedBy ( name , owner , lockId ) ; } finally { releaseDestroyReadLock ( ) ; } }
target:  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.