Closed jsonwan closed 3 weeks ago
Version / Branch / tag 3.8.x
出了什么问题?(What Happened?) 用的是ValueOperations<K, V>的这个方法: Boolean setIfAbsent(K key, V value, long timeout, TimeUnit unit); 一直以来,这个实现就是不正确的,实际上是用的redis的SET指令,没有SETNX的效果。
如何复现?(How to reproduce?) 排查file-gateway重调度任务被多次触发时发现:
预期结果(What you expect?) 分布式锁正常工作,file-gateway重调度任务同一时刻只有一个触发。
查明是误判,SET指令加上NX参数后就是SETNX的效果。 file-gateway重调度任务被多次触发是因为快速地获取并释放了锁,之后被其他实例获取到了导致。
Version / Branch / tag 3.8.x
出了什么问题?(What Happened?) 用的是ValueOperations<K, V>的这个方法: Boolean setIfAbsent(K key, V value, long timeout, TimeUnit unit); 一直以来,这个实现就是不正确的,实际上是用的redis的SET指令,没有SETNX的效果。
如何复现?(How to reproduce?) 排查file-gateway重调度任务被多次触发时发现:
预期结果(What you expect?) 分布式锁正常工作,file-gateway重调度任务同一时刻只有一个触发。