diff --git a/cmd/cart/pool-server.go b/cmd/cart/pool-server.go index b71986f..59f64b4 100644 --- a/cmd/cart/pool-server.go +++ b/cmd/cart/pool-server.go @@ -177,18 +177,20 @@ type SetCartItems struct { func getMultipleAddMessages(items []Item, country string) []proto.Message { wg := sync.WaitGroup{} + mu := sync.Mutex{} msgs := make([]proto.Message, 0, len(items)) for _, itm := range items { - wg.Add(1) - go func(itm Item) { - defer wg.Done() - msg, err := GetItemAddMessage(itm.Sku, itm.Quantity, country, itm.StoreId) - if err != nil { - log.Printf("error adding item %s: %v", itm.Sku, err) - return - } - msgs = append(msgs, msg) - }(itm) + wg.Go( + func() { + msg, err := GetItemAddMessage(itm.Sku, itm.Quantity, country, itm.StoreId) + if err != nil { + log.Printf("error adding item %s: %v", itm.Sku, err) + return + } + mu.Lock() + msgs = append(msgs, msg) + mu.Unlock() + }) } wg.Wait() return msgs