From 5bbfe44e4ea80ffd370c2fa4b78a6834b626f08a Mon Sep 17 00:00:00 2001 From: Colin Adler Date: Fri, 6 Jan 2023 20:52:57 -0600 Subject: [PATCH] fix: don't hang forever getting pg version This is quite confusing to run into as the server will hang forever after printing it's listening, causing the Helm ready/liveness checks to fail, even when the logs seem to indicate no errors. --- cli/server.go | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/cli/server.go b/cli/server.go index 9d07673fbd640..92e7f9bbc7d1b 100644 --- a/cli/server.go +++ b/cli/server.go @@ -532,6 +532,15 @@ func Server(vip *viper.Viper, newAPI func(context.Context, *coderd.Options) (*co return xerrors.Errorf("dial postgres: %w", err) } defer sqlDB.Close() + + pingCtx, pingCancel := context.WithTimeout(ctx, 15*time.Second) + defer pingCancel() + + err = sqlDB.PingContext(pingCtx) + if err != nil { + return xerrors.Errorf("ping postgres: %w", err) + } + // Ensure the PostgreSQL version is >=13.0.0! version, err := sqlDB.QueryContext(ctx, "SHOW server_version;") if err != nil { @@ -552,10 +561,6 @@ func Server(vip *viper.Viper, newAPI func(context.Context, *coderd.Options) (*co } logger.Debug(ctx, "connected to postgresql", slog.F("version", versionStr)) - err = sqlDB.Ping() - if err != nil { - return xerrors.Errorf("ping postgres: %w", err) - } err = migrations.Up(sqlDB) if err != nil { return xerrors.Errorf("migrate up: %w", err) @@ -793,9 +798,10 @@ func Server(vip *viper.Viper, newAPI func(context.Context, *coderd.Options) (*co }() hasFirstUser, err := client.HasFirstUser(ctx) - if !hasFirstUser && err == nil { - cmd.Println() - cmd.Println("Get started by creating the first user (in a new terminal):") + if err != nil { + cmd.Println("\nFailed to check for the first user: " + err.Error()) + } else if !hasFirstUser { + cmd.Println("\nGet started by creating the first user (in a new terminal):") cmd.Println(cliui.Styles.Code.Render("coder login " + accessURLParsed.String())) }