Skip to content

feat(thin): reconcile post-ready ThinRuntime FUSE template updates #6150

Description

@jlon

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

  1. Create a Dataset and ThinRuntime with a FUSE resource request.
  2. Wait until the ThinRuntime is Ready.
  3. Apply a changed spec.fuse.resources (for example CPU request 1 to 4), or change a FUSE template field such as image/lifecycle.
  4. 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

  1. Implement ThinEngine SyncRuntime() using the existing Thin transform/values machinery and only update resources when the rendered desired state differs.
  2. Cover at least resources, image, and lifecycle with controller tests.
  3. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions