You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When transactions take too long, the entire transaction is logged. This can include potentially sensitive data included in transactions that are stored in etcd (e.g. password hashes in our case). E.g.
time="2018-11-15T17:46:31Z" level=warning msg="request \"header:<ID:10788204787227406862 > txn:<compare:<key:\\\"/sensu.io/users/agent\\\" version:0 > success:<request_put:<key:\\\"/sensu.io/users/agent\\\" value:\\\"{\\\\\\\"username\\\\\\\":\\\\\\\"agent\\\\\\\",\\\\\\\"password\\\\\\\":\\\\\\\"[~~~HASH REDACTED~~~]\\\\\\\",\\\\\\\"roles\\\\\\\":[\\\\\\\"agent\\\\\\\"],\\\\\\\"disabled\\\\\\\":false}\\\" > > > \" took too long (7.010072416s) to execute" component=etcd pkg=etcdserver
We discovered this when some instances in CircleCI were having IO issues today. I definitely recognize the value in logging these, but if there's a way to reduce this to debug-level logging information, that might be preferable. We already log timeout errors (which this caused) in our client application:
And there's another warning-level message in etcd that that's really quite useful:
time="2018-11-15T17:46:20Z" level=warning msg="sync duration of 4.122922318s, expected less than 1s" component=etcd pkg=wal
If the gRPC server returned a more useful error message without the specific details about the cause of the timeout (I'm not exactly sure how feasible this is as I didn't spelunk too terribly far), that would be more helpful from the client side--especially if we can correlate transaction IDs.
plog.Warningf("%srequest %q took too long (%v) to execute", prefix, stringer.String(), d)
}
}
We want to keep the warning-level log messages as they include a considerable amount of valuable debugging information at a level that is not as verbose as debug. Suggestions or thoughts?
The text was updated successfully, but these errors were encountered:
When transactions take too long, the entire transaction is logged. This can include potentially sensitive data included in transactions that are stored in etcd (e.g. password hashes in our case). E.g.
We discovered this when some instances in CircleCI were having IO issues today. I definitely recognize the value in logging these, but if there's a way to reduce this to debug-level logging information, that might be preferable. We already log timeout errors (which this caused) in our client application:
And there's another warning-level message in etcd that that's really quite useful:
If the gRPC server returned a more useful error message without the specific details about the cause of the timeout (I'm not exactly sure how feasible this is as I didn't spelunk too terribly far), that would be more helpful from the client side--especially if we can correlate transaction IDs.
The log messages happen here in current master:
etcd/etcdserver/util.go
Lines 140 to 164 in e8b940f
And we're using 3.3.2:
etcd/etcdserver/util.go
Lines 108 to 114 in c9d46ab
We want to keep the warning-level log messages as they include a considerable amount of valuable debugging information at a level that is not as verbose as debug. Suggestions or thoughts?
The text was updated successfully, but these errors were encountered: