sofastack / sofa-jraft

A production-grade java implementation of RAFT consensus algorithm.
https://www.sofastack.tech/projects/sofa-jraft/
Apache License 2.0
3.57k stars 1.14k forks source link

分布式锁的watchdog可以设置全局吗? #1145

Closed chunlaiqingke closed 3 weeks ago

chunlaiqingke commented 1 month ago
public static void lockAndAutoKeepLease(final RheaKVStore rheaKVStore) {
        final ScheduledExecutorService watchdog = Executors.newSingleThreadScheduledExecutor();
        final String lockKey = "lock_example1";
        final DistributedLock<byte[]> lock = rheaKVStore.getDistributedLock(lockKey, 3, TimeUnit.SECONDS, watchdog);
        if (lock.tryLock()) {
            try {
                LOG.info("Lock success with: {}", lockKey);
            } finally {
                lock.unlock();
            }
        } else {
            LOG.info("Fail to lock with: {}", lockKey);
        }
        ExecutorServiceHelper.shutdownAndAwaitTermination(watchdog);
    }

这个watchDog每次加锁都要重新创建吗? 感觉开销有点大

fengjiachun commented 3 weeks ago

https://github.com/sofastack/sofa-jraft/blob/6569a15faf7ef46d22c344216ecde3e2cc765a5f/jraft-rheakv/rheakv-core/src/main/java/com/alipay/sofa/jraft/rhea/client/RheaKVStore.java#L713

fengjiachun commented 3 weeks ago

https://github.com/sofastack/sofa-jraft/blob/6569a15faf7ef46d22c344216ecde3e2cc765a5f/jraft-rheakv/rheakv-core/src/main/java/com/alipay/sofa/jraft/rhea/client/RheaKVStore.java#L713

看一下注释