public boolean tryLock()

in mode/cluster/repository/consul/src/main/java/org/apache/shardingsphere/mode/repository/cluster/consul/lock/ConsulDistributedLock.java [72:92]


    public boolean tryLock(final long timeoutMillis) {
        if (!Strings.isNullOrEmpty(lockSessionId.get())) {
            return true;
        }
        PutParams putParams = new PutParams();
        long remainingMillis = timeoutMillis;
        while (true) {
            String sessionId = createSessionId();
            putParams.setAcquireSession(sessionId);
            Response<Boolean> response = client.setKVValue(lockPath, LOCK_VALUE, putParams);
            if (response.getValue()) {
                return tryLock(sessionId);
            }
            client.sessionDestroy(sessionId, null);
            long waitingMillis = waitUntilRelease(response.getConsulIndex(), remainingMillis);
            if (waitingMillis >= remainingMillis) {
                return false;
            }
            remainingMillis -= waitingMillis;
        }
    }