aboutsummaryrefslogtreecommitdiff
path: root/pkg/driver/mounter.go
diff options
context:
space:
mode:
authorchrislusf <chris.lu@gmail.com>2025-12-03 19:31:12 -0800
committerChris Lu <chrislusf@users.noreply.github.com>2025-12-03 20:52:27 -0800
commite76bd693e2022ac71f857548b0919155ebb04ca9 (patch)
tree9ecb087da5b777f5119f77cc0991ce1bb2124b95 /pkg/driver/mounter.go
parent56b4ae6398fda983484c77b5c549a8c6bceab339 (diff)
downloadseaweedfs-csi-driver-e76bd693e2022ac71f857548b0919155ebb04ca9.tar.xz
seaweedfs-csi-driver-e76bd693e2022ac71f857548b0919155ebb04ca9.zip
fix: add self-healing for volume mount failures after driver restart
This addresses issue #203 - CSI Driver Self-Healing for Volume Mount Failures. Problem: When the CSI node driver restarts, the in-memory volume cache is lost. Kubelet then directly calls NodePublishVolume (skipping NodeStageVolume), which fails with 'volume hasn't been staged yet' error. Solution: 1. Added isStagingPathHealthy() to detect healthy vs stale/corrupted mounts 2. Added cleanupStaleStagingPath() to clean up stale mount points 3. Enhanced NodeStageVolume to clean up stale mounts before staging 4. Implemented self-healing in NodePublishVolume: - If staging path is healthy: rebuild volume cache from existing mount - If staging path is stale: clean up and re-stage automatically 5. Updated Volume.Unstage to handle rebuilt volumes without unmounter Benefits: - Automatic recovery after CSI driver restarts - No manual intervention required (no kubelet/pod restarts needed) - Handles both live and dead FUSE mount scenarios - Backward compatible with normal operations Fixes #203
Diffstat (limited to 'pkg/driver/mounter.go')
0 files changed, 0 insertions, 0 deletions