| Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
- Upgrade actions/checkout from v3 to v4
- Upgrade azure/setup-helm from v3 to v4
- Upgrade actions/setup-python from v4 to v5
These upgrades address Node.js runtime deprecations and ensure
compatibility with the latest GitHub Actions infrastructure.
|
|
Fixes #214
Changes:
- Modified helm_release workflow to require GitHub releases instead of tag pushes
- Added environment protection requiring manual approval before publishing
- Added version duplication check to prevent overriding existing versions
- Enhanced CI to warn when Helm files change without version update
Setup required:
1. Create 'helm-release' environment in repository settings
2. Add required reviewers (maintainers with release privileges)
3. Releases now require creating GitHub Releases and manual approval
|
|
- Reduce volumeSizeLimitMB from 64 to 16 for faster volume allocation
- Trust the readiness probe instead of redundant manual wget check
(pod 1/1 Ready means filer port 8888 is responding)
- Use 'kubectl wait --for=condition=ready pod' which is more reliable
- Add brief 5s stabilization delay after readiness
|
|
Remove livenessProbe on /cluster/healthz which may not work well with
-master.peers=none. Keep only the filer readinessProbe which is what
we actually need to verify before running CSI tests.
|
|
- Add readinessProbe for filer (httpGet on port 8888)
- Add livenessProbe for master (httpGet on /cluster/healthz port 9333)
- Increase wait timeout from 60s to 180s for deployment
- Increase filer wait loop from 30 to 60 iterations (3s each)
- Add pod status and logs output on failure for debugging
Learned from SeaweedFS repo's e2e-mount.yml compose file which uses
proper healthchecks for each service.
|
|
- Log warning if stopping mount process fails after mount wait timeout
to help diagnose potential zombie processes
- Add comment explaining the 100ms delay before unmounting is for
FUSE cleanup and pending I/O to complete
|
|
Using :latest in static manifests can lead to unpredictable behavior.
The :dev tag signals this is a development version and is more appropriate
for version-controlled manifests.
|
|
- Change image tags from :dev to :latest in seaweedfs-csi.yaml for
predictable production deployments
- Replace deprecated IsMountPoint with IsLikelyNotMountPoint for
consistency with k8s.io/mount-utils recommendations
|
|
The weedMountProcess.wait() function already handles unmounting when the
process terminates. Removing the explicit unmount call in Unmount()
centralizes the unmount logic and avoids potential race conditions.
|
|
- Unmount now uses getMount first, only removes from state after all
cleanup operations succeed (transactional behavior)
- Add volume ID prefix to weed mount stdout/stderr logs for better
debugging when multiple mounts are active
|
|
|
|
Reduce code duplication by using a generic makePostHandler function
that abstracts the common logic of handling POST requests, decoding
JSON, calling a manager function, and encoding the JSON response.
|
|
- Change cacheDir permissions from 0750 to 0755 for non-root access
- Change targetPath (mount point) permissions from 0750 to 0755
- Remove ineffective os.ErrProcessDone checks (not exported in os package)
|
|
- Change seaweedfs-mount DaemonSet updateStrategy from RollingUpdate to OnDelete
in seaweedfs-csi.yaml for consistency with values.yaml (safer for active mounts)
- Add warning log when invalid mountEndpoint is provided to aid debugging
|
|
- Add hard failure if SeaweedFS filer never becomes ready (exit 1 after loop)
- Remove || true from CSI pod readiness checks for earlier failure detection
- Change mountService.enabled default to false (opt-in) for safer upgrades
Existing installations won't unexpectedly get a new privileged DaemonSet
|
|
|
|
- Change mountService updateStrategy from RollingUpdate to OnDelete
(mount service not yet resilient to its own restarts)
- Change mountService image from :latest to :dev for consistency
- Fix defer os.RemoveAll: explicitly remove cache dir after process stops
to avoid removing while process might still be running
|
|
Errors from manager.Mount and manager.Unmount can be due to internal
server issues (filesystem errors, process start failures) not just
bad client requests.
|
|
- 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
|
|
- CSI driver deploys to 'default' namespace, not 'seaweedfs-csi'
- Fix app labels: seaweedfs-controller, seaweedfs-node, seaweedfs-mount
- Update log collection to use correct labels
|
|
|
|
- Fix sed pattern: replace SEAWEEDFS_FILER:8888 instead of localhost:8888
- Add readiness check for SeaweedFS filer before deploying CSI driver
- Wait for all CSI components (controller, node, mount service)
- Increase wait time for pods to start
|
|
directory exists
Address review feedback from gemini-code-assist:
- Replace recursive approach with non-recursive to avoid potential stack overflow
- Always call os.MkdirAll at the end to ensure directory exists after unmount
- Add better error messages with context
- Add logging for unmount operations
|
|
- Sets up kind cluster
- Deploys SeaweedFS server
- Deploys CSI driver with mount service
- Creates StorageClass and PVC
- Runs functional tests (write/read)
- Collects logs on failure for debugging
|
|
- CRITICAL: Make socket path configurable based on mountEndpoint
- Added volumeSocketDir field to SeaweedFsDriver
- LocalSocketPath now accepts baseDir parameter
- Derived from mountEndpoint for user-configurable socket paths
- HIGH: Pin seaweedfs version in Dockerfiles for reproducible builds
- Added SEAWEEDFS_VERSION build arg (default: 3.80)
- Clone specific tag instead of master
- HIGH: Fix Dockerfile.dev to use local context instead of personal fork
- Removed hardcoded zemul/seaweedfs-csi-driver clone
- Now uses COPY . . for local development
- HIGH: Change :latest to :dev in kubernetes manifests
- Mutable :latest tag replaced with :dev for predictability
- MEDIUM: Remove Aliyun mirror from Dockerfile.dev
- Region-specific mirrors shouldn't be in general-purpose files
- MEDIUM: Improve error handling in client.go
- Now reports read errors when failing to read error response body
- MEDIUM: Fix inconsistent error return in manager.go
- Return nil instead of empty struct on error (Go idiom)
|
|
warnings
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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)
|