From 5d770c160c24e8a08885db4e06c4fe445d2c2401 Mon Sep 17 00:00:00 2001 From: gearnode Date: Sun, 23 Mar 2025 23:44:33 +0100 Subject: [PATCH] Fix panic print non json log line Signed-off-by: gearnode --- go.mod | 6 ++-- go.sum | 12 +++---- pkg/server/api/console/v1/gqlgen.yaml | 2 +- pkg/server/api/console/v1/resolver.go | 45 ++++++++++++++++----------- 4 files changed, 37 insertions(+), 28 deletions(-) diff --git a/go.mod b/go.mod index 16b1620d2..35622f940 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( github.com/prometheus/client_golang v1.21.1 github.com/vektah/gqlparser/v2 v2.5.23 go.gearno.de/crypto/uuid v0.1.0 - go.gearno.de/kit v0.0.0-20250313103045-779e525d954c + go.gearno.de/kit v0.0.0-20250323223516-30dae6317e43 go.opentelemetry.io/otel/trace v1.35.0 golang.org/x/crypto v0.36.0 ) @@ -55,8 +55,8 @@ require ( github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.62.0 // indirect - github.com/prometheus/procfs v0.15.1 // indirect + github.com/prometheus/common v0.63.0 // indirect + github.com/prometheus/procfs v0.16.0 // indirect github.com/rivo/uniseg v0.4.4 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sosodev/duration v1.3.1 // indirect diff --git a/go.sum b/go.sum index ac271d08c..601d71b24 100644 --- a/go.sum +++ b/go.sum @@ -116,10 +116,10 @@ github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGC github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= -github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= +github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= +github.com/prometheus/procfs v0.16.0 h1:xh6oHhKwnOJKMYiYBDWmkHqQPyiY40sny36Cmx2bbsM= +github.com/prometheus/procfs v0.16.0/go.mod h1:8veyXUu3nGP7oaCxhX6yeaM5u4stL2FeMXnCqhDthZg= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= @@ -148,8 +148,8 @@ github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGC github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= go.gearno.de/crypto/uuid v0.1.0 h1:94BYg7GYItJ6yYZ1GJayb3VYhI9/FjxuR1nFaduR4hE= go.gearno.de/crypto/uuid v0.1.0/go.mod h1:fnIIvKO9QnsyLO3ZJLJT3r8KZv/p0FOeT5eZKilYWXg= -go.gearno.de/kit v0.0.0-20250313103045-779e525d954c h1:zriqh+c5QMPBL6fZtSxKNLgULooI9Oxnyh4IL9y0Fzs= -go.gearno.de/kit v0.0.0-20250313103045-779e525d954c/go.mod h1:RsqqVkwq+p4rmtOfYLX8NmQ+kIDi0tgyzAr2GsuLUnE= +go.gearno.de/kit v0.0.0-20250323223516-30dae6317e43 h1:qp4H4Ezs6ivVTBBok/T2oPNhFhLHwFeJnryOm5UKx9Q= +go.gearno.de/kit v0.0.0-20250323223516-30dae6317e43/go.mod h1:RsqqVkwq+p4rmtOfYLX8NmQ+kIDi0tgyzAr2GsuLUnE= go.gearno.de/x/panicf v0.1.1 h1:E3Cr9NB8Ry2EsvEG/1eHr7kplP3tEjTf5d56dTX64VQ= go.gearno.de/x/panicf v0.1.1/go.mod h1:VnB8oF0UefMZcYeD4v+Wk4U5Z1uza7PHLlhT2CbNEbU= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= diff --git a/pkg/server/api/console/v1/gqlgen.yaml b/pkg/server/api/console/v1/gqlgen.yaml index b750bd895..ad66603c0 100644 --- a/pkg/server/api/console/v1/gqlgen.yaml +++ b/pkg/server/api/console/v1/gqlgen.yaml @@ -15,7 +15,7 @@ resolver: filename_template: "v1_resolver.go" autobind: [] -omit_panic_handler: true +# omit_panic_handler: true call_argument_directives_with_null: true models: diff --git a/pkg/server/api/console/v1/resolver.go b/pkg/server/api/console/v1/resolver.go index a17404e88..80a9e9678 100644 --- a/pkg/server/api/console/v1/resolver.go +++ b/pkg/server/api/console/v1/resolver.go @@ -101,32 +101,41 @@ func graphqlHandler(proboSvc *probo.Service, usrmgrSvc *usrmgr.Service, authCfg ) srv := handler.New(es) srv.AddTransport(transport.POST{}) - srv.AddTransport(transport.MultipartForm{ - MaxMemory: 32 * mb, - MaxUploadSize: 50 * mb, - }) + srv.AddTransport( + transport.MultipartForm{ + MaxMemory: 32 * mb, + MaxUploadSize: 50 * mb, + }, + ) srv.Use(extension.Introspection{}) + srv.SetRecoverFunc( + func(ctx context.Context, err any) error { + panic(fmt.Errorf("graphql resolver panic: %v", err)) + }, + ) - srv.AroundOperations(func(ctx context.Context, next graphql.OperationHandler) graphql.ResponseHandler { - user := UserFromContext(ctx) + srv.AroundOperations( + func(ctx context.Context, next graphql.OperationHandler) graphql.ResponseHandler { + user := UserFromContext(ctx) - if user == nil { - return func(ctx context.Context) *graphql.Response { - return &graphql.Response{ - Errors: gqlerror.List{ - &gqlerror.Error{ - Message: "authentication required", - Extensions: map[string]any{ - "code": "UNAUTHENTICATED", + if user == nil { + return func(ctx context.Context) *graphql.Response { + return &graphql.Response{ + Errors: gqlerror.List{ + &gqlerror.Error{ + Message: "authentication required", + Extensions: map[string]any{ + "code": "UNAUTHENTICATED", + }, }, }, - }, + } } } - } - return next(ctx) - }) + return next(ctx) + }, + ) return func(w http.ResponseWriter, r *http.Request) { ctx := r.Context()