Add detailed parameter tracing + custom prefix (#18518)

* Allow per handler custom prefix.
* Add automatic parameter extraction
This commit is contained in:
Klaus Post
2023-11-26 01:32:59 -08:00
committed by GitHub
parent 11dc723324
commit ca488cce87
6 changed files with 93 additions and 9 deletions
+30 -1
View File
@@ -55,7 +55,7 @@ const (
HandlerUpdateMetadata
HandlerWriteMetadata
HandlerCheckParts
HandlerRenamedata
HandlerRenameData
// Add more above here ^^^
// If all handlers are used, the type of Handler can be changed.
@@ -65,6 +65,34 @@ const (
handlerLast
)
// handlerPrefixes are prefixes for handler IDs used for tracing.
// If a handler is not listed here, it will be traced with "grid" prefix.
var handlerPrefixes = [handlerLast]string{
HandlerLockLock: lockPrefix,
HandlerLockRLock: lockPrefix,
HandlerLockUnlock: lockPrefix,
HandlerLockRUnlock: lockPrefix,
HandlerLockRefresh: lockPrefix,
HandlerLockForceUnlock: lockPrefix,
HandlerWalkDir: storagePrefix,
HandlerStatVol: storagePrefix,
HandlerDiskInfo: storagePrefix,
HandlerNSScanner: storagePrefix,
HandlerReadXL: storagePrefix,
HandlerReadVersion: storagePrefix,
HandlerDeleteFile: storagePrefix,
HandlerDeleteVersion: storagePrefix,
HandlerUpdateMetadata: storagePrefix,
HandlerWriteMetadata: storagePrefix,
HandlerCheckParts: storagePrefix,
HandlerRenameData: storagePrefix,
}
const (
lockPrefix = "lock"
storagePrefix = "storageR"
)
func init() {
// Static check if we exceed 255 handler ids.
// Extend the type to uint16 when hit.
@@ -364,6 +392,7 @@ func (h *SingleHandler[Req, Resp]) Call(ctx context.Context, c Requester, req Re
if err != nil {
return resp, err
}
ctx = context.WithValue(ctx, TraceParamsKey{}, req)
res, err := c.Request(ctx, h.id, payload)
PutByteBuffer(payload)
if err != nil {