Skip to content
This repository has been archived by the owner on Sep 15, 2023. It is now read-only.

Commit

Permalink
Merge pull request #45 from askuy/feature/cronlock
Browse files Browse the repository at this point in the history
cron redis lock
  • Loading branch information
askuy authored Mar 2, 2021
2 parents 815c1cd + eaf1ab3 commit e4816dc
Show file tree
Hide file tree
Showing 18 changed files with 250 additions and 46 deletions.
4 changes: 2 additions & 2 deletions edingtalk/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ require (
github.com/BurntSushi/toml v0.3.1
github.com/gin-gonic/gin v1.6.3
github.com/go-redis/redis/v8 v8.6.0
github.com/gotomicro/ego v0.3.6
github.com/gotomicro/ego-component/eredis v0.1.5-0.20210301102617-a45f200f21c4
github.com/gotomicro/ego v0.3.10
github.com/gotomicro/ego-component/eredis v0.2.0
github.com/stretchr/testify v1.7.0
go.uber.org/zap v1.15.0
)
10 changes: 10 additions & 0 deletions edingtalk/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/HdrHistogram/hdrhistogram-go v0.9.0 h1:dpujRju0R4M/QZzcnR1LH1qm+TVG3UzkWdp5tH1WMcg=
github.com/HdrHistogram/hdrhistogram-go v0.9.0/go.mod h1:nxrse8/Tzg2tg3DZcZjm6qEclQKK70g0KxO61gFFZD4=
github.com/HdrHistogram/hdrhistogram-go v1.0.1/go.mod h1:BWJ+nMSHY3L41Zj7CA3uXnloDp7xxV0YvstAE7nKTaM=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
Expand Down Expand Up @@ -72,15 +73,20 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M=
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/gotomicro/ego v0.3.6 h1:WkRK03IEgDpkZmkOSvu8PKjHcL9CjdTqPSWY99NWmsk=
github.com/gotomicro/ego v0.3.6/go.mod h1:0FfBqO1mxIcKD92ko5GYp0JyifFjw+dnZzSbwP1JX7M=
github.com/gotomicro/ego v0.3.10 h1:Ekqykbb7ReNwlx6xQJ9cBc4HS85DJ2Tnp1U+ib8A07s=
github.com/gotomicro/ego v0.3.10/go.mod h1:1X86SNjzc9KLZ5BnywlWeka+WRcIkDqWYPIl2N9SyTU=
github.com/gotomicro/ego-component/eredis v0.1.5-0.20210301102617-a45f200f21c4 h1:bC82t7RvXA0nIUr8Qy2bbjti6yGPDsxREvB+xGxTcKU=
github.com/gotomicro/ego-component/eredis v0.1.5-0.20210301102617-a45f200f21c4/go.mod h1:Lf2dJr6xrWonvX0pvr6q73zye4zOsRA9aCgUviOH3dE=
github.com/gotomicro/ego-component/eredis v0.2.0 h1:cEb0YLHygVzaJ75Hq3vAF10YC/BaH1v9OpSRG7sHn0c=
github.com/gotomicro/ego-component/eredis v0.2.0/go.mod h1:Lf2dJr6xrWonvX0pvr6q73zye4zOsRA9aCgUviOH3dE=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
Expand Down Expand Up @@ -124,6 +130,8 @@ github.com/onsi/gomega v1.10.5 h1:7n6FEkpFmfCoo2t+YYqXH0evK+a9ICQz0xcAy9dYcaQ=
github.com/onsi/gomega v1.10.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7mt48=
github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU=
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/pierrec/lz4 v2.6.0+incompatible h1:Ix9yFKn1nSPBLFl/yZknTp8TU5G4Ps0JDmguYK6iH1A=
github.com/pierrec/lz4 v2.6.0+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
Expand Down Expand Up @@ -163,6 +171,8 @@ github.com/uber/jaeger-client-go v2.23.1+incompatible h1:uArBYHQR0HqLFFAypI7RsWT
github.com/uber/jaeger-client-go v2.23.1+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk=
github.com/uber/jaeger-lib v2.3.0+incompatible h1:B/kUIXcj6kIU3WSXgeJ7/uYj94I/r0LDa//JKgN/Sf0=
github.com/uber/jaeger-lib v2.3.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U=
github.com/uber/jaeger-lib v2.4.0+incompatible h1:fY7QsGQWiCt8pajv4r7JEvmATdCVaWxXbjwyYwsNaLQ=
github.com/uber/jaeger-lib v2.4.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U=
github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo=
github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs=
Expand Down
7 changes: 4 additions & 3 deletions eredis/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
# eredis 组件使用指南


## 简介

[go-redis](https://github.com/go-redis/redis) 进行了轻量封装,并提供了以下功能:
Expand All @@ -9,8 +7,11 @@
- 支持自定义拦截器
- 提供了默认的 Debug 拦截器,开启 Debug 后可输出 Request、Response 至终端。
- 提供了默认的 Metric 拦截器,开启后可采集 Prometheus 指标数据
- 提供了redis的分布式锁
- 提供了redis的分布式锁的定时任务

## 快速上手

使用样例可参考 [examples](./examples/main.go)
使用样例可参考 [examples](./examples/redis/main.go)
使用样例可参考 [examples](./examples/redislockcron/main.go)

2 changes: 1 addition & 1 deletion eredis/component.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func (r *Component) Sentinel() *redis.Client {
return nil
}

// LockClient gets default distributed lock client
// LockClient gets default distributed Lock client
func (r *Component) LockClient() *lockClient {
return r.lockClient
}
64 changes: 64 additions & 0 deletions eredis/ecronlock/component.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package ecronlock

import (
"context"
"github.com/gotomicro/ego-component/eredis"
"github.com/gotomicro/ego/core/elog"
"sync"
"time"
)

type Component struct {
name string
config *Config
logger *elog.Component
client *eredis.Component
mutuex sync.RWMutex
locker *eredis.Lock
}

func newComponent(name string, config *Config, logger *elog.Component, client *eredis.Component) *Component {
reg := &Component{
name: name,
logger: logger,
client: client,
}
return reg
}

func (c *Component) Lock(ctx context.Context, key string, ttl time.Duration) error {
locker := c.client.LockClient()
lock, err := locker.Obtain(ctx, key, ttl, eredis.WithLockOptionRetryStrategy(eredis.LinearBackoffRetry(ttl)))
if err != nil {
return err
}
c.mutuex.Lock()
c.locker = lock
c.mutuex.Unlock()
return nil
}

func (c *Component) Unlock(ctx context.Context, key string) error {
c.mutuex.Lock()
locker := c.locker
c.mutuex.Unlock()
if locker == nil {
return nil
}

err := c.locker.Release(ctx)
if err != nil {
c.logger.Warn("cron unlock warning", elog.FieldErr(err))
}
return nil
}

func (c *Component) Refresh(ctx context.Context, key string, ttl time.Duration) error {
c.mutuex.Lock()
locker := c.locker
c.mutuex.Unlock()
if locker == nil {
return nil
}
return locker.Refresh(ctx, ttl)
}
11 changes: 11 additions & 0 deletions eredis/ecronlock/config.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package ecronlock

// Config ...
type Config struct {
OnFailHandle string
}

// DefaultConfig ...
func DefaultConfig() *Config {
return &Config{}
}
55 changes: 55 additions & 0 deletions eredis/ecronlock/container.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package ecronlock

import (
"github.com/gotomicro/ego-component/eredis"
"github.com/gotomicro/ego/core/econf"
"github.com/gotomicro/ego/core/elog"
)

type Option func(c *Container)

type Container struct {
config *Config
name string
logger *elog.Component
client *eredis.Component
}

func DefaultContainer() *Container {
return &Container{
config: DefaultConfig(),
logger: elog.EgoLogger.With(elog.FieldComponent(eredis.PackageName)),
}
}

func Load(key string) *Container {
c := DefaultContainer()
if err := econf.UnmarshalKey(key, &c.config); err != nil {
c.logger.Panic("parse Config error", elog.FieldErr(err), elog.FieldKey(key))
return c
}
c.logger = c.logger.With(elog.FieldComponentName(key))
c.name = key
return c
}

func WithClientRedis(kubernetes *eredis.Component) Option {
return func(c *Container) {
c.client = kubernetes
}
}

// Build ...
func (c *Container) Build(options ...Option) *Component {
for _, option := range options {
option(c)
}
if c.client == nil {
if c.config.OnFailHandle == "panic" {
c.logger.Panic("client redis nil", elog.FieldKey("use WithClientRedis method"))
} else {
c.logger.Error("client redis nil", elog.FieldKey("use WithClientRedis method"))
}
}
return newComponent(c.name, c.config, c.logger, c.client)
}
4 changes: 2 additions & 2 deletions eredis/error.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ const (
// ErrInvalidParams is returned when parameters is invalid.
ErrInvalidParams = Err("invalid params")

// ErrNotObtained is returned when a lock cannot be obtained.
// ErrNotObtained is returned when a Lock cannot be obtained.
ErrNotObtained = Err("redislock: not obtained")

// ErrLockNotHeld is returned when trying to release an inactive lock.
// ErrLockNotHeld is returned when trying to release an inactive Lock.
ErrLockNotHeld = Err("redislock: lock not held")
)
File renamed without changes.
File renamed without changes.
11 changes: 11 additions & 0 deletions eredis/examples/redislockcron/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
[redis.test]
debug = true # ego增加redis debug,打开后可以看到,配置名、地址、耗时、请求数据、响应数据
addr = "127.0.0.1:6379"
enableAccessInterceptor = true
enableAccessInterceptorReq = true
enableAccessInterceptorRes = true
[cron.default]
withSeconds = false
concurrentDelay = 1
immediatelyRun = false
distributedTask = true
34 changes: 34 additions & 0 deletions eredis/examples/redislockcron/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package main

import (
"github.com/gotomicro/ego"
"github.com/gotomicro/ego-component/eredis/ecronlock"
"github.com/gotomicro/ego/core/elog"
"github.com/gotomicro/ego/task/ecron"
"time"

"github.com/gotomicro/ego-component/eredis"
)

// export EGO_DEBUG=true && go run main.go --config=config.toml
func main() {
err := ego.New().Cron(cronJob()).Run()
if err != nil {
elog.Panic("startup", elog.FieldErr(err))
}
}

var eredisClient *eredis.Component

func cronJob() ecron.Ecron {
lock := ecronlock.Load("").Build(ecronlock.WithClientRedis(eredis.Load("redis.test").Build()))
cron := ecron.Load("cron.default").Build(ecron.WithLocker(lock))
cron.Schedule(ecron.Every(time.Second*10), ecron.FuncJob(helloWorld))
return cron
}

func helloWorld() error {
elog.Info("info job")
elog.Warn("warn job")
return nil
}
4 changes: 3 additions & 1 deletion eredis/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@ go 1.15

require (
github.com/BurntSushi/toml v0.3.1
github.com/codahale/hdrhistogram v0.9.0 // indirect
github.com/go-redis/redis/v8 v8.6.0
github.com/gotomicro/ego v0.3.6
github.com/gotomicro/ego v0.3.10
github.com/stretchr/testify v1.7.0
google.golang.org/protobuf v1.25.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
)
15 changes: 15 additions & 0 deletions eredis/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/HdrHistogram/hdrhistogram-go v0.9.0 h1:dpujRju0R4M/QZzcnR1LH1qm+TVG3UzkWdp5tH1WMcg=
github.com/HdrHistogram/hdrhistogram-go v0.9.0/go.mod h1:nxrse8/Tzg2tg3DZcZjm6qEclQKK70g0KxO61gFFZD4=
github.com/HdrHistogram/hdrhistogram-go v1.0.1/go.mod h1:BWJ+nMSHY3L41Zj7CA3uXnloDp7xxV0YvstAE7nKTaM=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
Expand Down Expand Up @@ -43,6 +44,7 @@ github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+
github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI=
github.com/go-redis/redis/v8 v8.6.0 h1:swqbqOrxaPztsj2Hf1p94M3YAgl7hYEpcw21z299hh8=
github.com/go-redis/redis/v8 v8.6.0/go.mod h1:DQ9q4Rk2HtwkrwVrdgmphoOQDMfpvcd/nHEwRsicg8s=
github.com/go-resty/resty/v2 v2.3.0 h1:JOOeAvjSlapTT92p8xiS19Zxev1neGikoHsXJeOq8So=
github.com/go-resty/resty/v2 v2.3.0/go.mod h1:UpN9CgLZNsv4e9XG50UU8xdI0F43UQ4HmxLBDwaroHU=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
Expand All @@ -65,13 +67,22 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M=
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/gotomicro/ego v0.3.6 h1:WkRK03IEgDpkZmkOSvu8PKjHcL9CjdTqPSWY99NWmsk=
github.com/gotomicro/ego v0.3.6/go.mod h1:0FfBqO1mxIcKD92ko5GYp0JyifFjw+dnZzSbwP1JX7M=
github.com/gotomicro/ego v0.3.9 h1:pYcxhLdy39jnFKncsxy4qr4m7bJ8F0q1VY0i3ugCeEY=
github.com/gotomicro/ego v0.3.9/go.mod h1:1X86SNjzc9KLZ5BnywlWeka+WRcIkDqWYPIl2N9SyTU=
github.com/gotomicro/ego v0.3.10-0.20210302032946-8999238e4434 h1:Q5YiCOJa2Dmg6N0IwNErPzLKSxTXRHoQ5X2y5vCOmOU=
github.com/gotomicro/ego v0.3.10-0.20210302032946-8999238e4434/go.mod h1:1X86SNjzc9KLZ5BnywlWeka+WRcIkDqWYPIl2N9SyTU=
github.com/gotomicro/ego v0.3.10-0.20210302035632-d812664ce907 h1:EWYjyAms50BBdP0OhdZGHzQKomyIDKXPhfKAD8dOSn8=
github.com/gotomicro/ego v0.3.10-0.20210302035632-d812664ce907/go.mod h1:1X86SNjzc9KLZ5BnywlWeka+WRcIkDqWYPIl2N9SyTU=
github.com/gotomicro/ego v0.3.10 h1:Ekqykbb7ReNwlx6xQJ9cBc4HS85DJ2Tnp1U+ib8A07s=
github.com/gotomicro/ego v0.3.10/go.mod h1:1X86SNjzc9KLZ5BnywlWeka+WRcIkDqWYPIl2N9SyTU=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
Expand Down Expand Up @@ -113,6 +124,8 @@ github.com/onsi/gomega v1.10.5 h1:7n6FEkpFmfCoo2t+YYqXH0evK+a9ICQz0xcAy9dYcaQ=
github.com/onsi/gomega v1.10.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7mt48=
github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU=
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/pierrec/lz4 v2.6.0+incompatible h1:Ix9yFKn1nSPBLFl/yZknTp8TU5G4Ps0JDmguYK6iH1A=
github.com/pierrec/lz4 v2.6.0+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
Expand Down Expand Up @@ -152,6 +165,8 @@ github.com/uber/jaeger-client-go v2.23.1+incompatible h1:uArBYHQR0HqLFFAypI7RsWT
github.com/uber/jaeger-client-go v2.23.1+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk=
github.com/uber/jaeger-lib v2.3.0+incompatible h1:B/kUIXcj6kIU3WSXgeJ7/uYj94I/r0LDa//JKgN/Sf0=
github.com/uber/jaeger-lib v2.3.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U=
github.com/uber/jaeger-lib v2.4.0+incompatible h1:fY7QsGQWiCt8pajv4r7JEvmATdCVaWxXbjwyYwsNaLQ=
github.com/uber/jaeger-lib v2.4.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U=
github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
Expand Down
4 changes: 3 additions & 1 deletion eredis/interceptor.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,9 @@ func fixedInterceptor(compName string, config *config, logger *elog.Component) *
}).
setAfterProcess(func(ctx context.Context, cmd redis.Cmder) error {
var err = cmd.Err()
if err != nil {
// go-redis script的error做了prefix处理
// https://github.com/go-redis/redis/blob/master/script.go#L61
if err != nil && !strings.HasPrefix(err.Error(), "NOSCRIPT ") {
err = fmt.Errorf("eredis exec command %s fail, %w", cmd.Name(), err)
}
return err
Expand Down
Loading

0 comments on commit e4816dc

Please sign in to comment.