From 2f8a583ec6430a093944746e83d68f2a6ed0e6be Mon Sep 17 00:00:00 2001 From: Kalaiselvim <117940852+Kalaiselvi84@users.noreply.github.com> Date: Mon, 24 Jul 2023 14:48:49 -0700 Subject: [PATCH] SDK WatchGameServer logs error on shutdown (#3271) * SDK WatchGameServer logs error on shutdown * update-comment * suggested changes in sdk.go * added ! * Recommended modification * change in condition * check nil pointer for gs --------- Co-authored-by: Mark Mandel --- sdks/go/sdk.go | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/sdks/go/sdk.go b/sdks/go/sdk.go index af76a527a1..0a49766b00 100644 --- a/sdks/go/sdk.go +++ b/sdks/go/sdk.go @@ -42,6 +42,14 @@ type SDK struct { alpha *Alpha } +// ErrorLog is a function to log the error. +type ErrorLog func(string, error) + +// Logger is a pluggable function that outputs the error message to standard error. +var Logger ErrorLog = func(msg string, err error) { + fmt.Fprintf(os.Stderr, "%s: %s\n", msg, err) +} + // NewSDK starts a new SDK instance, and connects to localhost // on port "AGONES_SDK_GRPC_PORT" which by default is 9357. // Blocks until connection and handshake are made. @@ -132,17 +140,22 @@ func (s *SDK) WatchGameServer(f GameServerCallback) error { if err != nil { return errors.Wrap(err, "could not watch gameserver") } - + log := func(gs *sdk.GameServer, msg string, err error) { + if gs == nil || gs.ObjectMeta.DeletionTimestamp == 0 { + return + } + Logger(msg, err) + } go func() { for { var gs *sdk.GameServer gs, err = stream.Recv() if err != nil { if err == io.EOF { - _, _ = fmt.Fprintln(os.Stderr, "gameserver event stream EOF received") + log(gs, "gameserver event stream EOF received", nil) return } - _, _ = fmt.Fprintf(os.Stderr, "error watching GameServer: %s\n", err.Error()) + log(gs, "error watching GameServer", err) // This is to wait for the reconnection, and not peg the CPU at 100%. time.Sleep(time.Second) continue