From f8f6a5390ecde9ac91b6d6cdf6a36d045a494f78 Mon Sep 17 00:00:00 2001 From: Fedor Zhukov Date: Mon, 8 Dec 2025 11:36:02 +0100 Subject: [PATCH] gnetcli_server: Fix race condition between GnetcliStarter and unix socket listener GnetcliStarter assumes that "init unix socket" log message signals that the socket is ready. --- cmd/gnetcli_server/server.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/cmd/gnetcli_server/server.go b/cmd/gnetcli_server/server.go index 5929b97..78935b1 100644 --- a/cmd/gnetcli_server/server.go +++ b/cmd/gnetcli_server/server.go @@ -121,12 +121,14 @@ func main() { logger = zap.Must(logConfig.Build()) if len(cfg.UnixSocket) > 0 { - // log level and "init unix socket", "path" is used in gnetcli_adapter - logger.Warn("init unix socket", zap.String("path", cfg.UnixSocket)) unixSocketLn, err := newUnixSocket(cfg.UnixSocket) if err != nil { logger.Panic("unix socket error", zap.Error(err)) } + // log level and "init unix socket", "path" is used in GnetcliStarter + // also should be placed after the listener creation to avoid race condition + // when GnetcliStarter client tries to connect to a socket that does not exist yet + logger.Warn("init unix socket", zap.String("path", cfg.UnixSocket)) grpcListeners = append(grpcListeners, unixSocketLn) } var gatewayServer *http.Server @@ -139,7 +141,7 @@ func main() { if err != nil { logger.Panic("tcp socket error", zap.Error(err)) } - // log level and "init tcp socket", "address" is used in gnetcli_adapter + // log level and "init tcp socket", "address" is used in GnetcliStarter logger.Warn("init tcp socket", zap.String("address", tcpSocketLn.Addr().String())) grpcListeners = append(grpcListeners, tcpSocketLn) if cfg.HttpListen != "" {