Browse Source

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

Kevin Wan 3 years ago
parent
commit
8745ed9c61
2 changed files with 2 additions and 6 deletions
  1. 2 5
      core/stores/redis/redislock.go
  2. 0 1
      core/stores/redis/redislock_test.go

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

@@ -16,9 +16,7 @@ const (
 else
     return 0
 end`
-	randomLen       = 16
-	tolerance       = 500 // milliseconds
-	millisPerSecond = 1000
+	randomLen = 16
 )
 
 // A RedisLock is a redis lock.
@@ -51,7 +49,7 @@ func (rl *RedisLock) Acquire() (bool, error) {
 	}
 
 	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 {
 		atomic.AddInt32(&rl.count, -1)
 		return false, nil
@@ -65,7 +63,6 @@ func (rl *RedisLock) Acquire() (bool, error) {
 	}
 
 	return true, nil
-
 }
 
 // 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()
 		assert.Nil(t, err)
 		assert.True(t, firstAcquire)
-
 	})
 }