aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--weed/topology/volume_growth_reservation_test.go5
1 files changed, 5 insertions, 0 deletions
diff --git a/weed/topology/volume_growth_reservation_test.go b/weed/topology/volume_growth_reservation_test.go
index e65d7c618..442995b80 100644
--- a/weed/topology/volume_growth_reservation_test.go
+++ b/weed/topology/volume_growth_reservation_test.go
@@ -139,6 +139,7 @@ func TestVolumeGrowth_ConcurrentAllocationPreventsRaceCondition(t *testing.T) {
const concurrentRequests = 10
var wg sync.WaitGroup
var successCount, failureCount atomic.Int32
+ var commitMutex sync.Mutex // Ensures atomic commit of volume creation + reservation release
for i := 0; i < concurrentRequests; i++ {
wg.Add(1)
@@ -156,6 +157,8 @@ func TestVolumeGrowth_ConcurrentAllocationPreventsRaceCondition(t *testing.T) {
// Simulate completion: increment volume count BEFORE releasing reservation
if reservation != nil {
+ commitMutex.Lock()
+
// First, increment the volume count to reflect the created volume
// Acquire lock briefly to access children map, then release before updating
dn.RLock()
@@ -169,6 +172,8 @@ func TestVolumeGrowth_ConcurrentAllocationPreventsRaceCondition(t *testing.T) {
// Then release the reservation
reservation.releaseAllReservations()
+
+ commitMutex.Unlock()
}
}
}(i)