From 298ee35f057d81861790a84b52bca20f310e61d5 Mon Sep 17 00:00:00 2001 From: ashmrtn Date: Thu, 19 Jan 2023 20:16:39 -0800 Subject: [PATCH] Use mutex when appending to error (#2201) ## Description Make error appending thread-safe since multiple goroutines may attempt to add an error at the same time. ## Does this PR need a docs update or release note? - [ ] :white_check_mark: Yes, it's included - [ ] :clock1: Yes, but in a later PR - [x] :no_entry: No ## Type of change - [ ] :sunflower: Feature - [x] :bug: Bugfix - [ ] :world_map: Documentation - [ ] :robot: Test - [ ] :computer: CI/Deployment - [ ] :broom: Tech Debt/Cleanup ## Issue(s) * closes #2197 ## Test Plan - [x] :muscle: Manual - [ ] :zap: Unit test - [ ] :green_heart: E2E --- src/internal/connector/exchange/exchange_data_collection.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/internal/connector/exchange/exchange_data_collection.go b/src/internal/connector/exchange/exchange_data_collection.go index 950cf7aaf..734b2fff1 100644 --- a/src/internal/connector/exchange/exchange_data_collection.go +++ b/src/internal/connector/exchange/exchange_data_collection.go @@ -197,7 +197,11 @@ func (col *Collection) streamItems(ctx context.Context) { semaphoreCh := make(chan struct{}, urlPrefetchChannelBufferSize) defer close(semaphoreCh) + updaterMu := sync.Mutex{} errUpdater := func(user string, err error) { + updaterMu.Lock() + defer updaterMu.Unlock() + errs = support.WrapAndAppend(user, err, errs) }