@Override
  public synchronized boolean tryLock(final long time, final TimeUnit unit)
      throws InterruptedException {
    return executeOperationInterruptibly(() -> {
      if (holdsLock() && reentryPolicy.preventReentry(DistributedMemberLock.this)) {
        return true;
      }
      return dls.lockInterruptibly(key, getLockTimeoutForLock(time, unit), leaseTimeout);
    });
  }
Constructs a new <code>DistributedMemberLock</code>.

@param dls the instance of <code>DistributedLockService</code> to use
@param key name of the key for this lock
@param leaseTimeout number of milliseconds to hold a lock before automatically releasing it
@param reentryPolicy defines behavior for lock reentry
@throws NullPointerException if dls or key is null
geode-core/src/main/java/org/apache/geode/distributed/internal/locks/DistributedMemberLock.java