Skip to content
This repository has been archived by the owner on Feb 23, 2024. It is now read-only.

Commit

Permalink
Improve logging
Browse files Browse the repository at this point in the history
  • Loading branch information
hawarir committed Oct 23, 2019
1 parent 306fc36 commit 4bf1264
Showing 1 changed file with 29 additions and 9 deletions.
38 changes: 29 additions & 9 deletions handler/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ func (r *redisHandler) Handle(conn redcon.Conn, cmd redcon.Command) {
startTime := time.Now()
reqCtx, err := tag.New(context.Background())
if err != nil {
log.Warnf("Failed to initialize instrumentation: %v", err)
log.WithField("context", "Error when recording command").Warn(err)
}
defer stats.Record(reqCtx, reqLatencyMs.M(sinceInMs(startTime)))

Expand Down Expand Up @@ -127,7 +127,7 @@ func (r *redisHandler) Handle(conn redcon.Conn, cmd redcon.Command) {
}

if err != redis.ErrNil {
conn.WriteError(err.Error())
logAndReplyError(conn, cmd, err)
break
}

Expand All @@ -140,7 +140,7 @@ func (r *redisHandler) Handle(conn redcon.Conn, cmd redcon.Command) {
if err == redis.ErrNil {
conn.WriteNull()
} else {
conn.WriteError(err.Error())
logAndReplyError(conn, cmd, err)
}
break
}
Expand All @@ -151,12 +151,18 @@ func (r *redisHandler) Handle(conn redcon.Conn, cmd redcon.Command) {
_, err = redis.String(dstConn.Do("SET", key, val))
go recordRedisCmd("destination", "SET")
if err != nil {
log.Error(fmt.Errorf("Error when setting key %s: %v", key, err))
log.WithFields(log.Fields{
"context": "SET key to destination from source",
"key": string(key),
}).Error(err)
}

if r.deleteOnGet && err == nil {
if err := deleteKey(srcConn, key); err != nil {
log.Warn(err)
log.WithFields(log.Fields{
"context": "Delete on GET",
"key": string(key),
}).Warn(err)
}
go recordRedisCmd("source", "DEL")
}
Expand All @@ -175,7 +181,11 @@ func (r *redisHandler) Handle(conn redcon.Conn, cmd redcon.Command) {
reply, err := redis.String(dstConn.Do(command, args...))
go recordRedisCmd("destination", "SET")
if err != nil {
conn.WriteError(err.Error())
if _, ok := err.(redis.Error); !ok {
logAndReplyError(conn, cmd, err)
} else {
conn.WriteError(err.Error())
}
break
}

Expand All @@ -184,7 +194,10 @@ func (r *redisHandler) Handle(conn redcon.Conn, cmd redcon.Command) {
defer srcConn.Close()

if err := deleteKey(srcConn, key); err != nil {
log.Warn(err)
log.WithFields(log.Fields{
"context": "Delete on SET",
"key": string(key),
}).Error(err)
} else {
r.Lock()
r.deletedKey[string(key)] = true
Expand Down Expand Up @@ -239,7 +252,7 @@ func (r *redisHandler) Handle(conn redcon.Conn, cmd redcon.Command) {
go recordRedisCmd("destination", command)
if err != nil {
if _, ok := err.(redis.Error); !ok {
log.Error(fmt.Errorf("Error when executing command %s: %v", command, err))
logAndReplyError(conn, cmd, err)
}
}

Expand Down Expand Up @@ -369,7 +382,7 @@ func newRedisPool(config ClientConfig) *redis.Pool {
func deleteKey(conn redis.Conn, key []byte) error {
_, err := redis.Int(conn.Do("DEL", key))
if err != nil && err != redis.ErrNil {
return fmt.Errorf("Error when deleting key %s: %v", key, err)
return err
}

return nil
Expand Down Expand Up @@ -430,3 +443,10 @@ func logCmd(cmdArgs [][]byte) []string {
}
return cmd
}

func logAndReplyError(conn redcon.Conn, cmd redcon.Command, err error) {
conn.WriteError("Unexpected server error")
log.WithFields(log.Fields{
"command": logCmd(cmd.Args),
}).Error(err)
}

0 comments on commit 4bf1264

Please sign in to comment.