From 6ee864416bd37622b672e39f1c375db8e9b0939c Mon Sep 17 00:00:00 2001 From: Alec Merdler Date: Wed, 20 Mar 2024 16:56:30 -0400 Subject: [PATCH] Import request ID metadata key from authzed-go Aligns the code with how we import other gRPC metadata keys from 'authzed-go'. --- e2e/go.mod | 2 +- e2e/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- pkg/cmd/server/defaults.go | 10 ++++++---- pkg/middleware/requestid/requestid.go | 10 +++++----- 6 files changed, 17 insertions(+), 15 deletions(-) diff --git a/e2e/go.mod b/e2e/go.mod index b469f07ebc..401ca2c56f 100644 --- a/e2e/go.mod +++ b/e2e/go.mod @@ -5,7 +5,7 @@ go 1.21 toolchain go1.21.1 require ( - github.com/authzed/authzed-go v0.11.1 + github.com/authzed/authzed-go v0.11.2-0.20240320204618-9622b72a72c6 github.com/authzed/grpcutil v0.0.0-20240123092924-129dc0a6a6e1 github.com/authzed/spicedb v1.29.5 github.com/brianvoe/gofakeit/v6 v6.23.2 diff --git a/e2e/go.sum b/e2e/go.sum index 17641f312c..d0ddc4342b 100644 --- a/e2e/go.sum +++ b/e2e/go.sum @@ -22,8 +22,8 @@ github.com/Masterminds/squirrel v1.5.4 h1:uUcX/aBc8O7Fg9kaISIUsHXdKuqehiXAMQTYX8 github.com/Masterminds/squirrel v1.5.4/go.mod h1:NNaOrjSoIDfDA40n7sr2tPNZRfjzjA400rg+riTZj10= github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230512164433-5d1fd1a340c9 h1:goHVqTbFX3AIo0tzGr14pgfAW2ZfPChKO21Z9MGf/gk= github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230512164433-5d1fd1a340c9/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM= -github.com/authzed/authzed-go v0.11.1 h1:N5CoDgF3Y28oESncviWEa7quGcrpXwe2KbYR4WCeg0M= -github.com/authzed/authzed-go v0.11.1/go.mod h1:w3Q8IbTR2raCDGIWCj2UHXxhQuhmpRPYNRutZjgUkXM= +github.com/authzed/authzed-go v0.11.2-0.20240320204618-9622b72a72c6 h1:zpdDybjx+3fyTf7UU2F6y/rkZuiylhUcNhkvewqn2Gs= +github.com/authzed/authzed-go v0.11.2-0.20240320204618-9622b72a72c6/go.mod h1:w3Q8IbTR2raCDGIWCj2UHXxhQuhmpRPYNRutZjgUkXM= github.com/authzed/cel-go v0.17.5 h1:lfpkNrR99B5QRHg5qdG9oLu/kguVlZC68VJuMk8tH9Y= github.com/authzed/cel-go v0.17.5/go.mod h1:XL/zEq5hKGVF8aOdMbG7w+BQPihLjY2W8N+UIygDA2I= github.com/authzed/grpcutil v0.0.0-20240123092924-129dc0a6a6e1 h1:zBfQzia6Hz45pJBeURTrv1b6HezmejB6UmiGuBilHZM= diff --git a/go.mod b/go.mod index a4dbb6ae20..6f226acbc4 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( contrib.go.opencensus.io/exporter/prometheus v0.4.2 github.com/IBM/pgxpoolprometheus v1.1.1 github.com/Masterminds/squirrel v1.5.4 - github.com/authzed/authzed-go v0.11.1 + github.com/authzed/authzed-go v0.11.2-0.20240320204618-9622b72a72c6 github.com/authzed/cel-go v0.17.5 github.com/authzed/consistent v0.1.0 github.com/authzed/grpcutil v0.0.0-20240123092924-129dc0a6a6e1 diff --git a/go.sum b/go.sum index 0ed7b3a01a..0296259132 100644 --- a/go.sum +++ b/go.sum @@ -113,8 +113,8 @@ github.com/ashanbrown/forbidigo v1.6.0 h1:D3aewfM37Yb3pxHujIPSpTf6oQk9sc9WZi8ger github.com/ashanbrown/forbidigo v1.6.0/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU= github.com/ashanbrown/makezero v1.1.1 h1:iCQ87C0V0vSyO+M9E/FZYbu65auqH0lnsOkf5FcB28s= github.com/ashanbrown/makezero v1.1.1/go.mod h1:i1bJLCRSCHOcOa9Y6MyF2FTfMZMFdHvxKHxgO5Z1axI= -github.com/authzed/authzed-go v0.11.1 h1:N5CoDgF3Y28oESncviWEa7quGcrpXwe2KbYR4WCeg0M= -github.com/authzed/authzed-go v0.11.1/go.mod h1:w3Q8IbTR2raCDGIWCj2UHXxhQuhmpRPYNRutZjgUkXM= +github.com/authzed/authzed-go v0.11.2-0.20240320204618-9622b72a72c6 h1:zpdDybjx+3fyTf7UU2F6y/rkZuiylhUcNhkvewqn2Gs= +github.com/authzed/authzed-go v0.11.2-0.20240320204618-9622b72a72c6/go.mod h1:w3Q8IbTR2raCDGIWCj2UHXxhQuhmpRPYNRutZjgUkXM= github.com/authzed/cel-go v0.17.5 h1:lfpkNrR99B5QRHg5qdG9oLu/kguVlZC68VJuMk8tH9Y= github.com/authzed/cel-go v0.17.5/go.mod h1:XL/zEq5hKGVF8aOdMbG7w+BQPihLjY2W8N+UIygDA2I= github.com/authzed/consistent v0.1.0 h1:tlh1wvKoRbjRhMm2P+X5WQQyR54SRoS4MyjLOg17Mp8= diff --git a/pkg/cmd/server/defaults.go b/pkg/cmd/server/defaults.go index 12f63be134..dd3ff96b54 100644 --- a/pkg/cmd/server/defaults.go +++ b/pkg/cmd/server/defaults.go @@ -27,6 +27,8 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/codes" + "github.com/authzed/authzed-go/pkg/requestmeta" + "github.com/authzed/spicedb/internal/dispatch" "github.com/authzed/spicedb/internal/logging" consistencymw "github.com/authzed/spicedb/internal/middleware/consistency" @@ -208,7 +210,7 @@ func DefaultUnaryMiddleware(opts MiddlewareOption) (*MiddlewareChain[grpc.UnaryS NewUnaryMiddleware(). WithName(DefaultMiddlewareLog). - WithInterceptor(logmw.UnaryServerInterceptor(logmw.ExtractMetadataField("x-request-id", "requestID"))). + WithInterceptor(logmw.UnaryServerInterceptor(logmw.ExtractMetadataField(string(requestmeta.RequestIDKey), "requestID"))). Done(), NewUnaryMiddleware(). @@ -286,7 +288,7 @@ func DefaultStreamingMiddleware(opts MiddlewareOption) (*MiddlewareChain[grpc.St NewStreamMiddleware(). WithName(DefaultMiddlewareLog). - WithInterceptor(logmw.StreamServerInterceptor(logmw.ExtractMetadataField("x-request-id", "requestID"))). + WithInterceptor(logmw.StreamServerInterceptor(logmw.ExtractMetadataField(string(requestmeta.RequestIDKey), "requestID"))). Done(), NewStreamMiddleware(). @@ -373,7 +375,7 @@ func DefaultDispatchMiddleware(logger zerolog.Logger, authFunc grpcauth.AuthFunc grpcMetricsUnaryInterceptor, grpcMetricsStreamingInterceptor := GRPCMetrics(disableGRPCLatencyHistogram) return []grpc.UnaryServerInterceptor{ requestid.UnaryServerInterceptor(requestid.GenerateIfMissing(true)), - logmw.UnaryServerInterceptor(logmw.ExtractMetadataField("x-request-id", "requestID")), + logmw.UnaryServerInterceptor(logmw.ExtractMetadataField(string(requestmeta.RequestIDKey), "requestID")), otelgrpc.UnaryServerInterceptor(), // nolint: staticcheck grpclog.UnaryServerInterceptor(InterceptorLogger(logger), defaultCodeToLevel, durationFieldOption, traceIDFieldOption), grpcMetricsUnaryInterceptor, @@ -382,7 +384,7 @@ func DefaultDispatchMiddleware(logger zerolog.Logger, authFunc grpcauth.AuthFunc servicespecific.UnaryServerInterceptor, }, []grpc.StreamServerInterceptor{ requestid.StreamServerInterceptor(requestid.GenerateIfMissing(true)), - logmw.StreamServerInterceptor(logmw.ExtractMetadataField("x-request-id", "requestID")), + logmw.StreamServerInterceptor(logmw.ExtractMetadataField(string(requestmeta.RequestIDKey), "requestID")), otelgrpc.StreamServerInterceptor(), // nolint: staticcheck grpclog.StreamServerInterceptor(InterceptorLogger(logger), defaultCodeToLevel, durationFieldOption, traceIDFieldOption), grpcMetricsStreamingInterceptor, diff --git a/pkg/middleware/requestid/requestid.go b/pkg/middleware/requestid/requestid.go index 82c5724522..58feb32848 100644 --- a/pkg/middleware/requestid/requestid.go +++ b/pkg/middleware/requestid/requestid.go @@ -5,6 +5,7 @@ import ( log "github.com/authzed/spicedb/internal/logging" + "github.com/authzed/authzed-go/pkg/requestmeta" "github.com/authzed/authzed-go/pkg/responsemeta" "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors" "github.com/rs/xid" @@ -12,8 +13,7 @@ import ( "google.golang.org/grpc/metadata" ) -// MetadataKey is the key in which request IDs are passed to metadata. -const MetadataKey = "x-request-id" +const metadataKey = string(requestmeta.RequestIDKey) // Option instances control how the middleware is initialized. type Option func(*handleRequestID) @@ -47,7 +47,7 @@ func (r *handleRequestID) ServerReporter(ctx context.Context, _ interceptors.Cal md, ok := metadata.FromIncomingContext(ctx) if ok { var requestIDs []string - requestIDs, haveRequestID = md[MetadataKey] + requestIDs, haveRequestID = md[metadataKey] if haveRequestID { requestID = requestIDs[0] } @@ -61,12 +61,12 @@ func (r *handleRequestID) ServerReporter(ctx context.Context, _ interceptors.Cal md = metadata.New(nil) } - md.Set(MetadataKey, requestID) + md.Set(metadataKey, requestID) ctx = metadata.NewIncomingContext(ctx, md) } if haveRequestID { - ctx = metadata.AppendToOutgoingContext(ctx, MetadataKey, requestID) + ctx = metadata.AppendToOutgoingContext(ctx, metadataKey, requestID) err := responsemeta.SetResponseHeaderMetadata(ctx, map[responsemeta.ResponseMetadataHeaderKey]string{ responsemeta.RequestID: requestID, })