|
|
|
@ -81,14 +81,15 @@ func TestVolumeGrowth_ReservationBasedAllocation(t *testing.T) { |
|
|
|
} |
|
|
|
|
|
|
|
// Simulate successful volume creation
|
|
|
|
// Must acquire lock before accessing children map to prevent race condition
|
|
|
|
dn.Lock() |
|
|
|
// Acquire lock briefly to access children map, then release before updating
|
|
|
|
dn.RLock() |
|
|
|
disk := dn.children[NodeId(types.HardDriveType.String())].(*Disk) |
|
|
|
dn.RUnlock() |
|
|
|
|
|
|
|
deltaDiskUsage := &DiskUsageCounts{ |
|
|
|
volumeCount: 1, |
|
|
|
} |
|
|
|
disk.UpAdjustDiskUsageDelta(types.HardDriveType, deltaDiskUsage) |
|
|
|
dn.Unlock() |
|
|
|
|
|
|
|
// Release reservation after successful creation
|
|
|
|
reservation.releaseAllReservations() |
|
|
|
@ -156,14 +157,15 @@ func TestVolumeGrowth_ConcurrentAllocationPreventsRaceCondition(t *testing.T) { |
|
|
|
// Simulate completion: increment volume count BEFORE releasing reservation
|
|
|
|
if reservation != nil { |
|
|
|
// First, increment the volume count to reflect the created volume
|
|
|
|
// Must acquire lock before accessing children map to prevent race condition
|
|
|
|
dn.Lock() |
|
|
|
// Acquire lock briefly to access children map, then release before updating
|
|
|
|
dn.RLock() |
|
|
|
disk := dn.children[NodeId(types.HardDriveType.String())].(*Disk) |
|
|
|
dn.RUnlock() |
|
|
|
|
|
|
|
deltaDiskUsage := &DiskUsageCounts{ |
|
|
|
volumeCount: 1, |
|
|
|
} |
|
|
|
disk.UpAdjustDiskUsageDelta(types.HardDriveType, deltaDiskUsage) |
|
|
|
dn.Unlock() |
|
|
|
|
|
|
|
// Then release the reservation
|
|
|
|
reservation.releaseAllReservations() |
|
|
|
|