@@ -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