Browse Source
Implement volume-aware task conflict checking
Implement volume-aware task conflict checking
MAJOR IMPROVEMENT: Tasks now conflict by volume ID, not globally by task type Changes: - PRIMARY RULE: Tasks on the same volume ID always conflict (prevents race conditions) - SECONDARY RULE: Minimal global task type conflicts (currently none) - Add isDiskAvailableForVolume() for volume-specific availability checking - Add GetAvailableDisksForVolume() and GetDisksWithEffectiveCapacityForVolume() - Remove overly restrictive global task type conflicts - Update planning functions to focus on capacity, not conflicts Benefits: ✅ Multiple vacuum tasks can run on different volumes simultaneously ✅ Balance and erasure coding can run on different volumes ✅ Still prevents dangerous concurrent operations on same volume ✅ Much more efficient resource utilization ✅ Maintains data integrity and prevents race conditions This addresses the user feedback that task conflicts should be volume-specific, not global task type restrictions.add-ec-vacuum
3 changed files with 111 additions and 31 deletions
-
59weed/admin/topology/capacity.go
-
59weed/admin/topology/internal.go
-
24weed/admin/topology/topology_management.go
Write
Preview
Loading…
Cancel
Save
Reference in new issue