diff --git a/weed/wdclient/masterclient.go b/weed/wdclient/masterclient.go index 794471f7b..7a0bc9181 100644 --- a/weed/wdclient/masterclient.go +++ b/weed/wdclient/masterclient.go @@ -106,15 +106,11 @@ func withMasterClient(ctx context.Context, master string, grpcDialOption grpc.Di return fmt.Errorf("failed to parse master grpc %v", master) } - grpcConnection, err := util.GrpcDial(ctx, masterGrpcAddress, grpcDialOption) - if err != nil { - return fmt.Errorf("fail to dial %s: %v", master, err) - } - defer grpcConnection.Close() - - client := master_pb.NewSeaweedClient(grpcConnection) + return util.WithCachedGrpcClient(ctx, func(grpcConnection *grpc.ClientConn) error { + client := master_pb.NewSeaweedClient(grpcConnection) + return fn(ctx, client) + }, masterGrpcAddress, grpcDialOption) - return fn(ctx, client) } func (mc *MasterClient) WithClient(ctx context.Context, fn func(client master_pb.SeaweedClient) error) error {