From 0027704169ff7430ffa1403e1d5850ab4f917ea5 Mon Sep 17 00:00:00 2001 From: hezhaohui Date: Wed, 29 Jul 2026 14:47:31 +0800 Subject: [PATCH] =?UTF-8?q?fix(server):=20=E4=BF=AE=E5=A4=8D=20TestSubscri?= =?UTF-8?q?beTask=5FConcurrentSafety=20=E6=95=B0=E6=8D=AE=E7=AB=9E?= =?UTF-8?q?=E4=BA=89=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复多个 goroutine 并发 append 同一 slice 导致的 DATA RACE - 使用预分配 slice + 索引赋值替代并发 append - 通过 go test -race 验证 --- server/internal/service/delivery_task_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/server/internal/service/delivery_task_test.go b/server/internal/service/delivery_task_test.go index 77c5ea4..b1f2b2f 100644 --- a/server/internal/service/delivery_task_test.go +++ b/server/internal/service/delivery_task_test.go @@ -354,14 +354,14 @@ func TestSubscribeTask_ConcurrentSafety(t *testing.T) { const goroutines = 50 // 并发订阅 - cancels := make([]func(), 0, goroutines) + cancels := make([]func(), goroutines) for i := 0; i < goroutines; i++ { wg.Add(1) - go func() { + go func(idx int) { defer wg.Done() _, cancel := svc.SubscribeTask(taskID) - cancels = append(cancels, cancel) - }() + cancels[idx] = cancel + }(i) } wg.Wait()