From 0ee77561be4640683b9f97ccd3a13a5477a6480c Mon Sep 17 00:00:00 2001 From: Boming Zhang Date: Sat, 23 Mar 2024 18:19:14 -0400 Subject: [PATCH] feat: return error on grpc connection error --- internal/executors/sandbox/executor.go | 6 +++++- internal/executors/sandbox/grpc.go | 7 +++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/internal/executors/sandbox/executor.go b/internal/executors/sandbox/executor.go index df01796..72a1daf 100644 --- a/internal/executors/sandbox/executor.go +++ b/internal/executors/sandbox/executor.go @@ -16,8 +16,12 @@ type Sandbox struct { } func (e *Sandbox) Run(cmds []stage.Cmd) ([]stage.ExecutorResult, error) { + var err error if e.execClient == nil { - e.execClient = createExecClient(e.execServer, e.token) + e.execClient, err = createExecClient(e.execServer, e.token) + if err != nil { + return nil, err + } } // cannot use range loop since we need to change the value for i := 0; i < len(cmds); i++ { diff --git a/internal/executors/sandbox/grpc.go b/internal/executors/sandbox/grpc.go index 8de65a2..efb4d2e 100644 --- a/internal/executors/sandbox/grpc.go +++ b/internal/executors/sandbox/grpc.go @@ -3,7 +3,6 @@ package sandbox import ( "context" "log/slog" - "os" "github.com/criyle/go-judge/pb" "google.golang.org/grpc" @@ -12,13 +11,13 @@ import ( ) // copied from https://github.com/criyle/go-judger-demo/blob/master/apigateway/main.go -func createExecClient(execServer, token string) pb.ExecutorClient { +func createExecClient(execServer, token string) (pb.ExecutorClient, error) { conn, err := createGRPCConnection(execServer, token) if err != nil { slog.Error("gRPC connection", "error", err) - os.Exit(1) + return nil, err } - return pb.NewExecutorClient(conn) + return pb.NewExecutorClient(conn), nil } func createGRPCConnection(addr, token string) (*grpc.ClientConn, error) {