| Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
|
|
|
|
the CSI components to call it.
|
|
Address gemini-code-assist review - use os.RemoveAll instead of os.Remove
to handle cases where the directory is not empty after an imperfect
unmount. This ensures complete cleanup of stale staging paths.
|
|
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
|
|
|
|
The filer_pb.Mkdir, filer_pb.Remove, and filer_pb.Exists functions
now require context.Context as the first parameter. This commit updates
all three function calls in controllerserver.go to match the updated API.
Fixes #206
|
|
|
|
|
|
|
|
fix https://github.com/seaweedfs/seaweedfs-csi-driver/issues/169
|
|
|
|
|
|
This reverts commit 44283c0ffe56e3180dae5b93801d07a3d621d355.
|
|
This reverts commit 4f60c279001475dcb398ed8c852ff2c6e366e16e.
|
|
|
|
|
|
|
|
|
|
|
|
https://github.com/seaweedfs/seaweedfs""
This reverts commit 8cb42c39
|
|
|
|
|
|
Context:
https://github.com/golang/go/wiki/CodeReviewComments#error-strings
https://stackoverflow.com/a/68793833
|
|
|
|
|
|
|
|
(it do nothing in reality)
|
|
|
|
|
|
https://kubernetes-csi.github.io/docs/volume-expansion.html
CSI Resizer should be always run even if not implemented. Also it should run only against controller.
Volume resize on node rpc call is handled by kubelet.
For now the only job for controller's volume resize is to make it two step and propagate changes to node.
|
|
|
|
|
|
|
|
|
|
|
|
k8s.io/mount-utils
|
|
|
|
|
|
Fixes #115
|
|
-removed deprecated/unneeded passthrough import
-added test.sh (needs work)
|
|
|