refactor: redis error for prometheus metric label (#2412)

Co-authored-by: dawn.zhou <dawn.zhou@yijinin.com>
master
dawn_zhou 2 years ago committed by GitHub
parent e6aa6fc361
commit d640544a40
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -2,10 +2,13 @@ package redis
import (
"context"
"io"
"net"
"strings"
"time"
red "github.com/go-redis/redis/v8"
"github.com/zeromicro/go-zero/core/breaker"
"github.com/zeromicro/go-zero/core/errorx"
"github.com/zeromicro/go-zero/core/logx"
"github.com/zeromicro/go-zero/core/mapping"
@ -116,24 +119,17 @@ func formatError(err error) string {
return ""
}
es := err.Error()
switch {
case strings.HasPrefix(es, "read"):
return "read timeout"
case strings.HasPrefix(es, "dial"):
if strings.Contains(es, "connection refused") {
return "connection refused"
opErr, ok := err.(*net.OpError)
if ok && opErr.Timeout() {
return "timeout"
}
return "dial timeout"
case strings.HasPrefix(es, "write"):
return "write timeout"
case strings.Contains(es, "EOF"):
switch err {
case io.EOF:
return "eof"
case strings.Contains(es, "reset"):
return "reset"
case strings.Contains(es, "broken"):
return "broken pipe"
case strings.Contains(es, "breaker"):
case context.DeadlineExceeded:
return "context deadline"
case breaker.ErrServiceUnavailable:
return "breaker"
default:
return "unexpected error"

Loading…
Cancel
Save