Background
ThinRuntime exposes FUSE template fields such as resources, image, lifecycle, environment, and options. The initial transform correctly renders FUSE resources, but post-ready changes are not reconciled.
pkg/ddc/base/syncs.go invokes Implement.SyncRuntime() on every reconciliation. pkg/ddc/thin/sync_runtime.go currently returns (false, nil) unconditionally, so an updated ThinRuntime never refreshes its values ConfigMap or FUSE DaemonSet.
Reproduction
- Create a Dataset and ThinRuntime with a FUSE resource request.
- Wait until the ThinRuntime is Ready.
- Apply a changed
spec.fuse.resources (for example CPU request 1 to 4), or change a FUSE template field such as image/lifecycle.
- Observe the runtime values ConfigMap and FUSE DaemonSet.
Actual behavior
Neither the values ConfigMap nor the DaemonSet template changes. Operators must patch the generated DaemonSet manually, which is not a declarative or durable interface.
Expected behavior
ThinRuntime should reconcile supported post-ready FUSE template fields into the rendered values and DaemonSet. For an OnDelete DaemonSet, the controller should update the template but must not silently delete active FUSE Pods; rollout semantics should be documented or surfaced in status/events.
Proposed direction
- Implement ThinEngine
SyncRuntime() using the existing Thin transform/values machinery and only update resources when the rendered desired state differs.
- Cover at least
resources, image, and lifecycle with controller tests.
- Add an end-to-end test: update a ready ThinRuntime and assert that its values ConfigMap and DaemonSet template converge.
Scope note
This request does not claim that Fluid can migrate old Linux FUSE file descriptors after a FUSE Pod exits. CSI FuseRecovery restores the consumer mount path for newly opened files; existing fd recovery is an application/runtime boundary.
Tested version
Fluid commit a6d461c7, using a Generic CacheRuntime ThinRuntime integration.
Background
ThinRuntime exposes FUSE template fields such as
resources, image, lifecycle, environment, and options. The initial transform correctly renders FUSE resources, but post-ready changes are not reconciled.pkg/ddc/base/syncs.goinvokesImplement.SyncRuntime()on every reconciliation.pkg/ddc/thin/sync_runtime.gocurrently returns(false, nil)unconditionally, so an updated ThinRuntime never refreshes its values ConfigMap or FUSE DaemonSet.Reproduction
spec.fuse.resources(for example CPU request1to4), or change a FUSE template field such as image/lifecycle.Actual behavior
Neither the values ConfigMap nor the DaemonSet template changes. Operators must patch the generated DaemonSet manually, which is not a declarative or durable interface.
Expected behavior
ThinRuntime should reconcile supported post-ready FUSE template fields into the rendered values and DaemonSet. For an
OnDeleteDaemonSet, the controller should update the template but must not silently delete active FUSE Pods; rollout semantics should be documented or surfaced in status/events.Proposed direction
SyncRuntime()using the existing Thin transform/values machinery and only update resources when the rendered desired state differs.resources, image, and lifecycle with controller tests.Scope note
This request does not claim that Fluid can migrate old Linux FUSE file descriptors after a FUSE Pod exits. CSI FuseRecovery restores the consumer mount path for newly opened files; existing fd recovery is an application/runtime boundary.
Tested version
Fluid commit
a6d461c7, using a Generic CacheRuntime ThinRuntime integration.