From 74902a06e7cd93d8155b289d136307e6e7488eed Mon Sep 17 00:00:00 2001 From: yfsn666 Date: Wed, 19 Aug 2026 22:23:56 +0800 Subject: [PATCH] [INLONG-12198][SDK] Make getWorker atomic in Dataproxy Go SDK --- .../dataproxy-sdk-golang/dataproxy/client.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-golang/dataproxy/client.go b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-golang/dataproxy/client.go index f06b249a6b..915e9b2c0a 100755 --- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-golang/dataproxy/client.go +++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-golang/dataproxy/client.go @@ -257,8 +257,9 @@ func (c *client) SendAsync(ctx context.Context, msg Message, cb Callback) { func (c *client) getWorker() (*worker, error) { workerNum := uint64(len(c.workers)) - start := c.curWorkerIndex.Load() - c.curWorkerIndex.Add(1) + // Use the return value of the atomic increment as the starting index, ensuring + // concurrent callers each get a distinct sequence number. + start := c.curWorkerIndex.Add(1) - 1 for i := uint64(0); i < workerNum; i++ { w := c.workers[(start+i)%workerNum]