Browse Source

chore: add 1s for tolerance in redislock (#1367)

Kevin Wan 3 năm trước cách đây
mục cha
commit
8745ed9c61

+ 2 - 5
core/stores/redis/redislock.go

@@ -16,9 +16,7 @@ const (
 else
 else
     return 0
     return 0
 end`
 end`
-	randomLen       = 16
-	tolerance       = 500 // milliseconds
-	millisPerSecond = 1000
+	randomLen = 16
 )
 )
 
 
 // A RedisLock is a redis lock.
 // A RedisLock is a redis lock.
@@ -51,7 +49,7 @@ func (rl *RedisLock) Acquire() (bool, error) {
 	}
 	}
 
 
 	seconds := atomic.LoadUint32(&rl.seconds)
 	seconds := atomic.LoadUint32(&rl.seconds)
-	ok, err := rl.store.SetnxEx(rl.key, rl.id, int(seconds))
+	ok, err := rl.store.SetnxEx(rl.key, rl.id, int(seconds+1)) // +1s for tolerance
 	if err == red.Nil {
 	if err == red.Nil {
 		atomic.AddInt32(&rl.count, -1)
 		atomic.AddInt32(&rl.count, -1)
 		return false, nil
 		return false, nil
@@ -65,7 +63,6 @@ func (rl *RedisLock) Acquire() (bool, error) {
 	}
 	}
 
 
 	return true, nil
 	return true, nil
-
 }
 }
 
 
 // Release releases the lock.
 // Release releases the lock.

+ 0 - 1
core/stores/redis/redislock_test.go

@@ -49,6 +49,5 @@ func TestRedisLock(t *testing.T) {
 		firstAcquire, err = firstLock.Acquire()
 		firstAcquire, err = firstLock.Acquire()
 		assert.Nil(t, err)
 		assert.Nil(t, err)
 		assert.True(t, firstAcquire)
 		assert.True(t, firstAcquire)
-
 	})
 	})
 }
 }