From 5e53d68afdd67fc17db9d940f51795547cc843c7 Mon Sep 17 00:00:00 2001 From: Grant Linville Date: Mon, 15 Apr 2024 15:56:07 -0400 Subject: [PATCH] fix: credentials: do not prompt the user multiple times at once Signed-off-by: Grant Linville --- pkg/runner/runner.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkg/runner/runner.go b/pkg/runner/runner.go index 7f5a57b7..28664dd4 100644 --- a/pkg/runner/runner.go +++ b/pkg/runner/runner.go @@ -61,6 +61,7 @@ type Runner struct { runtimeManager engine.RuntimeManager ports engine.Ports credCtx string + credMutex sync.Mutex } func New(client engine.Model, credCtx string, opts ...Options) (*Runner, error) { @@ -71,6 +72,7 @@ func New(client engine.Model, credCtx string, opts ...Options) (*Runner, error) factory: opt.MonitorFactory, runtimeManager: opt.RuntimeManager, credCtx: credCtx, + credMutex: sync.Mutex{}, } if opt.StartPort != 0 { @@ -330,6 +332,10 @@ func recordStateMessage(state *engine.State) error { } func (r *Runner) handleCredentials(callCtx engine.Context, monitor Monitor, env []string) ([]string, error) { + // Since credential tools (usually) prompt the user, we want to only run one at a time. + r.credMutex.Lock() + defer r.credMutex.Unlock() + c, err := config.ReadCLIConfig("") if err != nil { return nil, fmt.Errorf("failed to read CLI config: %w", err)