diff --git a/go.mod b/go.mod index 880f96d33..15026f3ef 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/PuerkitoBio/rehttp v1.4.0 github.com/adjust/rmq/v5 v5.2.0 github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d - github.com/bsm/redislock v0.9.4 + github.com/bsm/redislock v0.9.3 github.com/caarlos0/env/v10 v10.0.0 github.com/certifi/gocertifi v0.0.0-20210507211836-431795d63e8d github.com/dave/jennifer v1.4.1 diff --git a/go.sum b/go.sum index 1e6fdd879..ac40ad84e 100644 --- a/go.sum +++ b/go.sum @@ -108,8 +108,8 @@ github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= -github.com/bsm/redislock v0.9.4 h1:X/Wse1DPpiQgHbVYRE9zv6m070UcKoOGekgvpNhiSvw= -github.com/bsm/redislock v0.9.4/go.mod h1:Epf7AJLiSFwLCiZcfi6pWFO/8eAYrYpQXFxEDPoDeAk= +github.com/bsm/redislock v0.9.3 h1:osmvugkXGiLDEhzUPdM0EUtKpTEgLLuli4Ky2Z4vx38= +github.com/bsm/redislock v0.9.3/go.mod h1:Epf7AJLiSFwLCiZcfi6pWFO/8eAYrYpQXFxEDPoDeAk= github.com/butuzov/ireturn v0.1.1 h1:QvrO2QF2+/Cx1WA/vETCIYBKtRjc30vesdoPUNo1EbY= github.com/butuzov/ireturn v0.1.1/go.mod h1:Wh6Zl3IMtTpaIKbmwzqi6olnM9ptYQxxVacMsOEFPoc= github.com/caarlos0/env/v10 v10.0.0 h1:yIHUBZGsyqCnpTkbjk8asUlx6RFhhEs+h7TOBdgdzXA= diff --git a/vendor/github.com/bsm/redislock/CHANGELOG.md b/vendor/github.com/bsm/redislock/CHANGELOG.md index f65bc9fb3..ee62aeef6 100644 --- a/vendor/github.com/bsm/redislock/CHANGELOG.md +++ b/vendor/github.com/bsm/redislock/CHANGELOG.md @@ -1,7 +1,3 @@ -## v0.9.4 - -- Fix: allow to re-obtain locks with tokens [#71](https://github.com/bsm/redislock/pull/71) - ## v0.9.3 - Feature: allow custom lock tokens [#66](https://github.com/bsm/redislock/pull/66) diff --git a/vendor/github.com/bsm/redislock/redislock.go b/vendor/github.com/bsm/redislock/redislock.go index 9f12a03fc..158d95479 100644 --- a/vendor/github.com/bsm/redislock/redislock.go +++ b/vendor/github.com/bsm/redislock/redislock.go @@ -18,12 +18,6 @@ var ( luaRefresh = redis.NewScript(`if redis.call("get", KEYS[1]) == ARGV[1] then return redis.call("pexpire", KEYS[1], ARGV[2]) else return 0 end`) luaRelease = redis.NewScript(`if redis.call("get", KEYS[1]) == ARGV[1] then return redis.call("del", KEYS[1]) else return 0 end`) luaPTTL = redis.NewScript(`if redis.call("get", KEYS[1]) == ARGV[1] then return redis.call("pttl", KEYS[1]) else return -3 end`) - luaObtain = redis.NewScript(` -if redis.call("set", KEYS[1], ARGV[1], "NX", "PX", ARGV[3]) then return redis.status_reply("OK") end - -local offset = tonumber(ARGV[2]) -if redis.call("getrange", KEYS[1], 0, offset-1) == string.sub(ARGV[1], 1, offset) then return redis.call("set", KEYS[1], ARGV[1], "PX", ARGV[3]) end -`) ) var ( @@ -37,6 +31,7 @@ var ( // RedisClient is a minimal client interface. type RedisClient interface { redis.Scripter + SetNX(ctx context.Context, key string, value interface{}, expiration time.Duration) *redis.BoolCmd } // Client wraps a redis client. @@ -65,7 +60,6 @@ func (c *Client) Obtain(ctx context.Context, key string, ttl time.Duration, opt } value := token + opt.getMetadata() - ttlVal := strconv.FormatInt(int64(ttl/time.Millisecond), 10) retry := opt.getRetryStrategy() // make sure we don't retry forever @@ -77,7 +71,7 @@ func (c *Client) Obtain(ctx context.Context, key string, ttl time.Duration, opt var ticker *time.Ticker for { - ok, err := c.obtain(ctx, key, value, len(token), ttlVal) + ok, err := c.obtain(ctx, key, value, ttl) if err != nil { return nil, err } else if ok { @@ -104,14 +98,8 @@ func (c *Client) Obtain(ctx context.Context, key string, ttl time.Duration, opt } } -func (c *Client) obtain(ctx context.Context, key, value string, tokenLen int, ttlVal string) (bool, error) { - _, err := luaObtain.Run(ctx, c.client, []string{key}, value, tokenLen, ttlVal).Result() - if err == redis.Nil { - return false, nil - } else if err != nil { - return false, err - } - return true, nil +func (c *Client) obtain(ctx context.Context, key, value string, ttl time.Duration) (bool, error) { + return c.client.SetNX(ctx, key, value, ttl).Result() } func (c *Client) randomToken() (string, error) { diff --git a/vendor/modules.txt b/vendor/modules.txt index 79122e797..905e69613 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -78,7 +78,7 @@ github.com/breml/bidichk/pkg/bidichk # github.com/breml/errchkjson v0.3.0 ## explicit; go 1.17 github.com/breml/errchkjson -# github.com/bsm/redislock v0.9.4 +# github.com/bsm/redislock v0.9.3 ## explicit; go 1.17 github.com/bsm/redislock # github.com/butuzov/ireturn v0.1.1