Redis锁相关疑问

Blade 未结 1 32

一、该问题的重现步骤是什么?

1. RedisLockClientImpl.java

2. 

@Override
public <T> T lock(String lockName, LockType lockType, long waitTime, long leaseTime, TimeUnit timeUnit, CheckedSupplier<T> supplier) {
    try {
       boolean result = this.tryLock(lockName, lockType, waitTime, leaseTime, timeUnit);
       if (result) {
          return supplier.get();
       }
    } catch (Throwable e) {
       throw Exceptions.unchecked(e);
    } finally {
       this.unLock(lockName, lockType);
    }
    return null;
}

3. 看方法如果锁失败的话,会返回null,这样业务那边只知道是返回的null,这是注解的方式,不是手动调用锁,可以进行下一步业务判断,注解锁不好做下一步判断的,是不是可以改成抛出异常更好一些?


二、你期待的结果是什么?实际看到的又是什么?


三、你正在使用的是什么产品,什么版本?在什么操作系统上?

商业版4.7

四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

1条回答
  • 这样没问题的,调用的就是redisson官方的方法,官方都是直接try catch,在catch内继续写逻辑,而不是对外抛出异常。

    CleanShot20260101220830@2x.png

    0 讨论(0)
提交回复