@@ -60,6 +60,9 @@ func NewClient(clientOption valkey.ClientOption, opts ...Option) (valkey.Client,
60
60
for _ , fn := range opts {
61
61
fn (cfg )
62
62
}
63
+ if cfg .errCheck == nil {
64
+ cfg .errCheck = defaultErrCheck
65
+ }
63
66
tClient := & client {
64
67
client : valkeyClient ,
65
68
cfg : cfg ,
@@ -80,14 +83,14 @@ func (c *client) Do(ctx context.Context, cmd valkey.Completed) valkey.ValkeyResu
80
83
span , ctx := c .startSpan (ctx , processCommand (& cmd ))
81
84
resp := c .client .Do (ctx , cmd )
82
85
setClientCacheTags (span , resp )
83
- span . Finish ( tracer . WithError ( resp .Error () ))
86
+ c . finishSpan ( span , resp .Error ())
84
87
return resp
85
88
}
86
89
87
90
func (c * client ) DoMulti (ctx context.Context , multi ... valkey.Completed ) []valkey.ValkeyResult {
88
91
span , ctx := c .startSpan (ctx , processCommandMulti (multi ))
89
92
resp := c .client .DoMulti (ctx , multi ... )
90
- c .finishSpan (span , firstError (resp ))
93
+ c .finishSpan (span , firstError (c . cfg . errCheck , resp ))
91
94
return resp
92
95
}
93
96
@@ -109,7 +112,7 @@ func (c *client) DoCache(ctx context.Context, cmd valkey.Cacheable, ttl time.Dur
109
112
func (c * client ) DoMultiCache (ctx context.Context , multi ... valkey.CacheableTTL ) []valkey.ValkeyResult {
110
113
span , ctx := c .startSpan (ctx , processCommandMultiCache (multi ))
111
114
resp := c .client .DoMultiCache (ctx , multi ... )
112
- c .finishSpan (span , firstError (resp ))
115
+ c .finishSpan (span , firstError (c . cfg . errCheck , resp ))
113
116
return resp
114
117
}
115
118
@@ -207,7 +210,7 @@ func (c *client) startSpan(ctx context.Context, cmd command) (tracer.Span, conte
207
210
208
211
func (c * client ) finishSpan (span tracer.Span , err error ) {
209
212
var opts []tracer.FinishOption
210
- if err != nil && ! valkey . IsValkeyNil (err ) {
213
+ if c . cfg . errCheck (err ) {
211
214
opts = append (opts , tracer .WithError (err ))
212
215
}
213
216
span .Finish (opts ... )
@@ -267,9 +270,9 @@ func multiCommand(cmds []command) command {
267
270
}
268
271
}
269
272
270
- func firstError (s []valkey.ValkeyResult ) error {
273
+ func firstError (errCheck func ( error ) bool , s []valkey.ValkeyResult ) error {
271
274
for _ , result := range s {
272
- if err := result .Error (); err != nil && ! valkey . IsValkeyNil (err ) {
275
+ if err := result .Error (); errCheck (err ) {
273
276
return err
274
277
}
275
278
}
0 commit comments