mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
server: skip unnecessary sprintf which executes proto.Size()
(cherry picked from commit 11edc76b15)
This commit is contained in:
@@ -104,6 +104,9 @@ func (nc *notifier) notify(err error) {
|
||||
}
|
||||
|
||||
func warnOfExpensiveRequest(lg *zap.Logger, warningApplyDuration time.Duration, now time.Time, reqStringer fmt.Stringer, respMsg proto.Message, err error) {
|
||||
if time.Since(now) <= warningApplyDuration {
|
||||
return
|
||||
}
|
||||
var resp string
|
||||
if !isNil(respMsg) {
|
||||
resp = fmt.Sprintf("size:%d", proto.Size(respMsg))
|
||||
@@ -127,6 +130,9 @@ func warnOfFailedRequest(lg *zap.Logger, now time.Time, reqStringer fmt.Stringer
|
||||
}
|
||||
|
||||
func warnOfExpensiveReadOnlyTxnRequest(lg *zap.Logger, warningApplyDuration time.Duration, now time.Time, r *pb.TxnRequest, txnResponse *pb.TxnResponse, err error) {
|
||||
if time.Since(now) <= warningApplyDuration {
|
||||
return
|
||||
}
|
||||
reqStringer := pb.NewLoggableTxnRequest(r)
|
||||
var resp string
|
||||
if !isNil(txnResponse) {
|
||||
@@ -145,6 +151,9 @@ func warnOfExpensiveReadOnlyTxnRequest(lg *zap.Logger, warningApplyDuration time
|
||||
}
|
||||
|
||||
func warnOfExpensiveReadOnlyRangeRequest(lg *zap.Logger, warningApplyDuration time.Duration, now time.Time, reqStringer fmt.Stringer, rangeResponse *pb.RangeResponse, err error) {
|
||||
if time.Since(now) <= warningApplyDuration {
|
||||
return
|
||||
}
|
||||
var resp string
|
||||
if !isNil(rangeResponse) {
|
||||
resp = fmt.Sprintf("range_response_count:%d size:%d", len(rangeResponse.Kvs), rangeResponse.Size())
|
||||
@@ -152,21 +161,18 @@ func warnOfExpensiveReadOnlyRangeRequest(lg *zap.Logger, warningApplyDuration ti
|
||||
warnOfExpensiveGenericRequest(lg, warningApplyDuration, now, reqStringer, "read-only range ", resp, err)
|
||||
}
|
||||
|
||||
// callers need make sure time has passed warningApplyDuration
|
||||
func warnOfExpensiveGenericRequest(lg *zap.Logger, warningApplyDuration time.Duration, now time.Time, reqStringer fmt.Stringer, prefix string, resp string, err error) {
|
||||
d := time.Since(now)
|
||||
|
||||
if d > warningApplyDuration {
|
||||
lg.Warn(
|
||||
"apply request took too long",
|
||||
zap.Duration("took", d),
|
||||
zap.Duration("expected-duration", warningApplyDuration),
|
||||
zap.String("prefix", prefix),
|
||||
zap.String("request", reqStringer.String()),
|
||||
zap.String("response", resp),
|
||||
zap.Error(err),
|
||||
)
|
||||
slowApplies.Inc()
|
||||
}
|
||||
lg.Warn(
|
||||
"apply request took too long",
|
||||
zap.Duration("took", time.Since(now)),
|
||||
zap.Duration("expected-duration", warningApplyDuration),
|
||||
zap.String("prefix", prefix),
|
||||
zap.String("request", reqStringer.String()),
|
||||
zap.String("response", resp),
|
||||
zap.Error(err),
|
||||
)
|
||||
slowApplies.Inc()
|
||||
}
|
||||
|
||||
func isNil(msg proto.Message) bool {
|
||||
|
||||
Reference in New Issue
Block a user