package rubyserver import ( "context" "fmt" "net" "time" "google.golang.org/grpc" healthpb "google.golang.org/grpc/health/grpc_health_v1" ) func ping(address string) error { conn, err := grpc.Dial( address, grpc.WithInsecure(), // Use a custom dialer to ensure that we don't experience // issues in environments that have proxy configurations // https://gitlab.com/gitlab-org/gitaly/merge_requests/1072#note_140408512 grpc.WithContextDialer(func(ctx context.Context, addr string) (conn net.Conn, err error) { d := net.Dialer{} return d.DialContext(ctx, "unix", addr) }), ) if err != nil { return fmt.Errorf("failed to connect to gitaly-ruby worker: %v", err) } defer conn.Close() ctx, cancel := context.WithTimeout(context.Background(), 1*time.Second) defer cancel() client := healthpb.NewHealthClient(conn) _, err = client.Check(ctx, &healthpb.HealthCheckRequest{}) return err }