From 877854a2f3fc9e78e3ff113bb52ffdeb53ec77be Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Mon, 25 Apr 2022 18:30:22 -0500 Subject: [PATCH] fix: Display proper access URL on server start (#1172) Fixes #1170. --- cli/server.go | 2 +- provisionerd/provisionerd.go | 21 ++++++++++----------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/cli/server.go b/cli/server.go index 9511c00098..28b21a7212 100644 --- a/cli/server.go +++ b/cli/server.go @@ -293,7 +293,7 @@ func server() *cobra.Command { if !hasFirstUser && err == nil { // This could fail for a variety of TLS-related reasons. // This is a helpful starter message, and not critical for user interaction. - _, _ = fmt.Fprint(cmd.ErrOrStderr(), cliui.Styles.Paragraph.Render(cliui.Styles.Wrap.Render(cliui.Styles.FocusedPrompt.String()+`Run `+cliui.Styles.Code.Render("coder login "+client.URL.String())+" in a new terminal to get started.\n"))) + _, _ = fmt.Fprint(cmd.ErrOrStderr(), cliui.Styles.Paragraph.Render(cliui.Styles.Wrap.Render(cliui.Styles.FocusedPrompt.String()+`Run `+cliui.Styles.Code.Render("coder login "+accessURL)+" in a new terminal to get started.\n"))) } } diff --git a/provisionerd/provisionerd.go b/provisionerd/provisionerd.go index 7cfe40c9ac..2866436244 100644 --- a/provisionerd/provisionerd.go +++ b/provisionerd/provisionerd.go @@ -99,11 +99,12 @@ type Server struct { shutdown chan struct{} // Locked when acquiring or failing a job. - jobMutex sync.Mutex - jobID string - jobRunning chan struct{} - jobFailed atomic.Bool - jobCancel context.CancelFunc + jobMutex sync.Mutex + jobID string + jobRunningMutex sync.Mutex + jobRunning chan struct{} + jobFailed atomic.Bool + jobCancel context.CancelFunc } // Connect establishes a connection to coderd. @@ -116,13 +117,10 @@ func (p *Server) connect(ctx context.Context) { if errors.Is(err, context.Canceled) { return } - p.closeMutex.Lock() if p.isClosed() { - p.closeMutex.Unlock() return } p.opts.Logger.Warn(context.Background(), "failed to dial", slog.Error(err)) - p.closeMutex.Unlock() continue } p.clientValue.Store(client) @@ -230,11 +228,10 @@ func (p *Server) acquireJob(ctx context.Context) { if job.JobId == "" { return } - if p.isClosed() { - return - } ctx, p.jobCancel = context.WithCancel(ctx) + p.jobRunningMutex.Lock() p.jobRunning = make(chan struct{}) + p.jobRunningMutex.Unlock() p.jobFailed.Store(false) p.jobID = job.JobId @@ -938,7 +935,9 @@ func (p *Server) closeWithError(err error) error { errMsg = err.Error() } p.failActiveJobf(errMsg) + p.jobRunningMutex.Lock() <-p.jobRunning + p.jobRunningMutex.Unlock() p.closeCancel() p.opts.Logger.Debug(context.Background(), "closing server with error", slog.Error(err))