From 716ed71b598e37bca10a4d048cb697c10fe746a6 Mon Sep 17 00:00:00 2001 From: Jarek Kowalski Date: Sun, 20 Mar 2022 22:21:03 -0700 Subject: [PATCH] fix(server): fixed server startup race condition (#1842) This fixes a regression introduced in #1837 --- internal/server/source_manager.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/internal/server/source_manager.go b/internal/server/source_manager.go index 095cf2f38..88173f317 100644 --- a/internal/server/source_manager.go +++ b/internal/server/source_manager.go @@ -148,6 +148,12 @@ func (s *sourceManager) setUploader(u *snapshotfs.Uploader) { } func (s *sourceManager) start(ctx context.Context, rep repo.Repository) { + isLocal := rep.ClientOptions().Hostname == s.src.Host && !rep.ClientOptions().ReadOnly + + go s.run(ctx, isLocal) +} + +func (s *sourceManager) run(ctx context.Context, isLocal bool) { // make sure we run in a detached context, which ignores outside cancelation and deadline. ctx = ctxutil.Detach(ctx) @@ -157,14 +163,12 @@ func (s *sourceManager) start(ctx context.Context, rep repo.Repository) { s.wg.Add(1) defer s.wg.Done() - if rep.ClientOptions().Hostname == s.src.Host && !rep.ClientOptions().ReadOnly { + if isLocal { log(ctx).Debugf("starting local source manager for %v", s.src) - - go s.runLocal(ctx) + s.runLocal(ctx) } else { log(ctx).Debugf("starting read-only source manager for %v", s.src) - - go s.runReadOnly(ctx) + s.runReadOnly(ctx) } }