Skip to content

Commit 47bc135

Browse files
authored
Merge pull request #5928 from parca-dev/fix/server/h2c-graceful-shutdown
fix(server): register HTTP/2 server graceful shutdown
2 parents bc38b54 + 146d3d5 commit 47bc135

1 file changed

Lines changed: 11 additions & 6 deletions

File tree

pkg/server/server.go

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ func (f RegisterableFunc) Register(ctx context.Context, srv *grpc.Server, mux *r
6161

6262
// Server is a wrapper around the http.Server.
6363
type Server struct {
64-
http.Server
64+
*http.Server
6565
grpcProbe *prober.GRPCProbe
6666
reg *prometheus.Registry
6767
version string
@@ -150,17 +150,22 @@ func (s *Server) ListenAndServe(
150150
return fmt.Errorf("failed to walk ui filesystem: %w", err)
151151
}
152152

153-
s.Server = http.Server{
153+
h2s := &http2.Server{}
154+
s.Server = &http.Server{
154155
Addr: addr,
155-
Handler: grpcHandlerFunc(
156+
Handler: h2c.NewHandler(grpcHandlerFunc(
156157
srv,
157158
fallbackNotFound(internalMux, uiHandler),
158159
allowedCORSOrigins,
159-
),
160+
), h2s),
160161
ReadTimeout: readTimeout,
161162
WriteTimeout: writeTimeout,
162163
}
163164

165+
if err := http2.ConfigureServer(s.Server, h2s); err != nil {
166+
return fmt.Errorf("failed to configure HTTP/2 server: %w", err)
167+
}
168+
164169
met.InitializeMetrics(srv)
165170
s.reg.MustRegister(met)
166171

@@ -285,13 +290,13 @@ func grpcHandlerFunc(grpcServer *grpc.Server, otherHandler http.Handler, allowed
285290
AllowCredentials: true,
286291
})
287292

288-
return corsMiddleware.Handler(h2c.NewHandler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
293+
return corsMiddleware.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
289294
if strings.HasPrefix(r.Header.Get("Content-Type"), "application/grpc") {
290295
wrappedGrpc.ServeHTTP(w, r)
291296
return
292297
}
293298
otherHandler.ServeHTTP(w, r)
294-
}), &http2.Server{}))
299+
}))
295300
}
296301

297302
// InterceptorLogger adapts go-kit logger to interceptor logger.

0 commit comments

Comments
 (0)