| Age | Commit message (Collapse) | Author | Files | Lines |
|
- Set localSocket in rebuildVolumeFromStaging to fix invalid gRPC target
- Use SHA256 hash (16 hex chars) in LocalSocketPath to minimize collision risk
- Update GitHub Actions to latest versions (checkout@v4, metadata-action@v5, etc.)
- Fix volumeMounts/volumes conditional mismatch in helm templates
- Add documentation for mountService defaults in values.yaml
|
|
the CSI components to call it.
|
|
Address gemini-code-assist review - when cleanup or re-staging fails
during self-healing in NodePublishVolume, remove the volume mutex to
avoid leaving stale entries. This maintains consistency with
NodeStageVolume's error handling behavior.
|
|
Address CodeRabbit review - if volume.Stage() succeeds but volume.Quota()
fails, clean up the staged mount before returning the error to avoid
leaving an orphaned FUSE process.
|
|
Address gemini-code-assist review feedback:
1. Return error from volume.Quota() failure in stageNewVolume - quota
failures should fail the staging operation
2. Return error from cleanupStaleStagingPath() in NodeStageVolume -
fail fast if cleanup fails rather than attempting to stage anyway
3. Return error from cleanupStaleStagingPath() in NodePublishVolume -
same fail-fast behavior for consistency
4. Return error from mount.CleanupMountPoint() in Volume.Unstage() -
propagate cleanup errors to caller as expected
|
|
Address CodeRabbit review - when a healthy staging path exists after driver
restart, rebuild the cache using rebuildVolumeFromStaging() instead of
cleaning up and re-staging. This:
- Maintains consistency with NodePublishVolume behavior
- Avoids disrupting existing published volumes that are bind-mounted
- Makes NodeStageVolume idempotent as per CSI spec
|
|
Address CodeRabbit review feedback - add defensive nil checks for
GetVolumeCapability() and GetAccessMode() in both isPublishVolumeReadOnly
and isVolumeReadOnly to prevent potential nil pointer dereference.
|
|
- Handle unexpected stat errors in cleanupStaleStagingPath (high priority)
- Extract staging logic into stageNewVolume helper method for reuse
- Extract isReadOnlyAccessMode helper to avoid duplicated read-only checks
- Remove redundant mountutil.Unmount call (CleanupMountPoint already handles it)
|
|
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
|
|
|
|
|
|
This reverts commit 44283c0ffe56e3180dae5b93801d07a3d621d355.
|
|
This reverts commit 4f60c279001475dcb398ed8c852ff2c6e366e16e.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
k8s.io/mount-utils
|
|
-removed deprecated/unneeded passthrough import
-added test.sh (needs work)
|
|
Use pid from cmd.Process instead of /proc lookup
Use mount specific mutex
Log fuse mount process stderr and stdout for problems investigation
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
related to https://github.com/seaweedfs/seaweedfs-csi-driver/issues/50
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|