mirror of
https://github.com/laoxong/nofx.git
synced 2026-06-07 11:17:56 +08:00
57e31b2ace
* fix(trader): add mutex to prevent race condition in Meta refresh (issue #742) **問題**: 根據 issue #742 審查標準,發現 BLOCKING 級別的並發安全問題: - refreshMetaIfNeeded() 中的 `t.meta = meta` 缺少並發保護 - 多個 goroutine 同時調用 OpenLong/OpenShort 會造成競態條件 **修復**: 1. 添加 sync.RWMutex 保護 meta 字段 2. refreshMetaIfNeeded() 使用寫鎖保護 meta 更新 3. getSzDecimals() 使用讀鎖保護 meta 訪問 **符合標準**: - issue #742: "並發安全問題需使用 sync.Once 等機制" - 使用 RWMutex 實現讀寫分離,提升並發性能 Co-Authored-By: tinkle-community <tinklefund@gmail.com> * test(trader): add comprehensive race condition tests for meta field mutex protection - Test concurrent reads (100 goroutines accessing getSzDecimals) - Test concurrent read/write (50 readers + 10 writers simulating meta refresh) - Test nil meta edge case (returns default value 4) - Test valid meta with multiple coins (BTC, ETH, SOL) - Test massive concurrency (1000 iterations with race detector) All 5 test cases passed, including -race verification with no data races detected. Co-Authored-By: tinkle-community <tinklefund@gmail.com> --------- Co-authored-by: ZhouYongyou <128128010+zhouyongyou@users.noreply.github.com> Co-authored-by: tinkle-community <tinklefund@gmail.com>