@Override
    public void close() {
        ThreadLockStats threadLockStats = LockStats.getForCurrentThread();
        // Update metrics now before release() to avoid double-counting time in locked state.
        // The lockPath must be sent down as close() may be invoked in an order not necessarily
        // equal to the reverse order of acquires.
        threadLockStats.preRelease(lockPath);
        try {
            mutex.release();
            threadLockStats.postRelease(lockPath);
        }
        catch (Exception e) {
            threadLockStats.releaseFailed(lockPath);
            throw new RuntimeException("Exception releasing lock '" + lockPath + "'", e);
        }
    }
Take the lock with the given timeout. This may be called multiple times from the same thread - each matched by a close
zkfacade/src/main/java/com/yahoo/vespa/curator/Lock.java