Skip to content

Commit 5ddc655

Browse files
authored
PMM-4326 Use a shared GRPC connection (#4770)
* PMM-4326 Use a shared GRPC connection * PMM-4326 Use grpc.NewClient instead of the deprecated method
1 parent efbb0ab commit 5ddc655

File tree

1 file changed

+31
-21
lines changed

1 file changed

+31
-21
lines changed

managed/cmd/pmm-managed/main.go

Lines changed: 31 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -359,36 +359,46 @@ func runHTTP1Server(ctx context.Context, deps *http1ServerDeps) {
359359
grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(gRPCMessageMaxSize)),
360360
}
361361

362-
// TODO switch from RegisterXXXHandlerFromEndpoint to RegisterXXXHandler to avoid extra dials
363-
// (even if they dial to localhost)
364-
// https://jira.percona.com/browse/PMM-4326
365-
type registrar func(context.Context, *grpc_gateway.ServeMux, string, []grpc.DialOption) error
362+
// Create a shared gRPC connection for handlers that use Register*Handler
363+
sharedConn, err := grpc.NewClient(gRPCAddr, opts...)
364+
if err != nil {
365+
l.Panic(err)
366+
}
367+
go func() {
368+
<-ctx.Done()
369+
if err := sharedConn.Close(); err != nil {
370+
l.Errorf("Failed to close the shared gRPC connection: %s", err)
371+
}
372+
}()
373+
374+
// Register services using Register*Handler
375+
type registrar func(context.Context, *grpc_gateway.ServeMux, *grpc.ClientConn) error
366376
for _, r := range []registrar{
367-
serverv1.RegisterServerServiceHandlerFromEndpoint,
377+
serverv1.RegisterServerServiceHandler,
368378

369-
inventoryv1.RegisterNodesServiceHandlerFromEndpoint,
370-
inventoryv1.RegisterServicesServiceHandlerFromEndpoint,
371-
inventoryv1.RegisterAgentsServiceHandlerFromEndpoint,
379+
inventoryv1.RegisterNodesServiceHandler,
380+
inventoryv1.RegisterServicesServiceHandler,
381+
inventoryv1.RegisterAgentsServiceHandler,
372382

373-
managementv1.RegisterManagementServiceHandlerFromEndpoint,
374-
actionsv1.RegisterActionsServiceHandlerFromEndpoint,
375-
advisorsv1.RegisterAdvisorServiceHandlerFromEndpoint,
376-
accesscontrolv1.RegisterAccessControlServiceHandlerFromEndpoint,
383+
managementv1.RegisterManagementServiceHandler,
384+
actionsv1.RegisterActionsServiceHandler,
385+
advisorsv1.RegisterAdvisorServiceHandler,
386+
accesscontrolv1.RegisterAccessControlServiceHandler,
377387

378-
alertingv1.RegisterAlertingServiceHandlerFromEndpoint,
388+
alertingv1.RegisterAlertingServiceHandler,
379389

380-
backupv1.RegisterBackupServiceHandlerFromEndpoint,
381-
backupv1.RegisterLocationsServiceHandlerFromEndpoint,
382-
backupv1.RegisterRestoreServiceHandlerFromEndpoint,
390+
backupv1.RegisterBackupServiceHandler,
391+
backupv1.RegisterLocationsServiceHandler,
392+
backupv1.RegisterRestoreServiceHandler,
383393

384-
dumpv1beta1.RegisterDumpServiceHandlerFromEndpoint,
394+
dumpv1beta1.RegisterDumpServiceHandler,
385395

386-
platformv1.RegisterPlatformServiceHandlerFromEndpoint,
387-
uieventsv1.RegisterUIEventsServiceHandlerFromEndpoint,
396+
platformv1.RegisterPlatformServiceHandler,
397+
uieventsv1.RegisterUIEventsServiceHandler,
388398

389-
userv1.RegisterUserServiceHandlerFromEndpoint,
399+
userv1.RegisterUserServiceHandler,
390400
} {
391-
if err := r(ctx, proxyMux, gRPCAddr, opts); err != nil {
401+
if err := r(ctx, proxyMux, sharedConn); err != nil {
392402
l.Panic(err)
393403
}
394404
}

0 commit comments

Comments
 (0)