void postRemoteReleaseLock(Object objectName) throws InterruptedException {
  if (!acquireDestroyReadLock(0)) {
    return;
  }
  try {
    checkDestroyed();
    drainPermittedRequests();
    grantLock(objectName);
  }
 catch (  LockServiceDestroyedException e) {
  }
catch (  LockGrantorDestroyedException e) {
  }
 finally {
    releaseDestroyReadLock();
  }
}

void postRemoteReleaseLock ( Object objectName ) throws InterruptedException { if ( ! acquireDestroyReadLock ( 0 ) ) { return ; } try { checkDestroyed ( ) ; drainPermittedRequests ( ) ; grantLock ( objectName ) ; } catch ( LockServiceDestroyedException e ) { } catch ( LockGrantorDestroyedException e ) { } finally { releaseDestroyReadLock ( ) ; } }
drain currently permitted requests and grant lock to next requestor . < p > acquires destroyreadlock . synchronizes on suspendlock , granttokens , and the grant token .
