enhance: [2.5] Adapt hyphen in grpc metadata header (#41358) (#41372)

Cherry-pick from master
pr: #41358
Related to #41357

Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
This commit is contained in:
congqixia 2025-04-17 19:12:39 +08:00 committed by GitHub
parent daa48f6806
commit f2a5542996
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -14,7 +14,9 @@ import (
) )
const ( const (
logLevelRPCMetaKey = "log_level" logLevelRPCMetaKeyLegacy = "log_level"
logLevelRPCMetaKey = "log-level"
clientRequestIDKeyLegacy = "client-request-id"
clientRequestIDKey = "client_request_id" clientRequestIDKey = "client_request_id"
) )
@ -37,7 +39,7 @@ func withLevelAndTrace(ctx context.Context) context.Context {
newctx := ctx newctx := ctx
var traceID trace.TraceID var traceID trace.TraceID
if md, ok := metadata.FromIncomingContext(ctx); ok { if md, ok := metadata.FromIncomingContext(ctx); ok {
levels := md.Get(logLevelRPCMetaKey) levels := GetMetadata(md, logLevelRPCMetaKey, logLevelRPCMetaKeyLegacy)
// get log level // get log level
if len(levels) >= 1 { if len(levels) >= 1 {
level := zapcore.DebugLevel level := zapcore.DebugLevel
@ -63,12 +65,12 @@ func withLevelAndTrace(ctx context.Context) context.Context {
newctx = metadata.AppendToOutgoingContext(newctx, logLevelRPCMetaKey, level.String()) newctx = metadata.AppendToOutgoingContext(newctx, logLevelRPCMetaKey, level.String())
} }
// client request id // client request id
requestID := md.Get(clientRequestIDKey) requestID := GetMetadata(md, clientRequestIDKey, clientRequestIDKeyLegacy)
if len(requestID) >= 1 { if len(requestID) >= 1 {
// inject traceid in order to pass client request id // inject traceid in order to pass client request id
newctx = metadata.AppendToOutgoingContext(newctx, clientRequestIDKey, requestID[0]) newctx = metadata.AppendToOutgoingContext(newctx, clientRequestIDKey, requestID[0])
var err error var err error
// if client_request_id is a valid traceID, use traceID path // if client-request-id is a valid traceID, use traceID path
traceID, err = trace.TraceIDFromHex(requestID[0]) traceID, err = trace.TraceIDFromHex(requestID[0])
if err != nil { if err != nil {
// set request id to custom field // set request id to custom field
@ -85,3 +87,13 @@ func withLevelAndTrace(ctx context.Context) context.Context {
} }
return newctx return newctx
} }
func GetMetadata(md metadata.MD, keys ...string) []string {
var result []string
for _, key := range keys {
if values := md.Get(key); len(values) > 0 {
result = append(result, values...)
}
}
return result
}