Skip to content

Title: [BUG] CacheRuntime Client (FUSE) component is never reconciled after initial creation — spec changes are silently ignored #6154

Description

@AdityaUpasani25214055

Body:

Describe the bug

After a CacheRuntime's Client (FUSE) DaemonSet is created once, no later change to runtime.spec.client.* (image/version, resources, tieredStore, volumes, env vars, or any other pod-template-affecting field) ever takes effect. The change is silently dropped — no error, no log entry, no indication anywhere that it was ignored.

Root cause

This is actually two compounding gaps:

  1. CacheEngine.ShouldSetupClient() in pkg/ddc/cache/engine/client.go gates all client reconciliation on runtime.Status.Client.Phase == RuntimePhaseNone. That phase flips away from None the very first time setup succeeds, so SetupClientInternal (and therefore manager.Reconciler()) never runs again for the lifetime of the CacheRuntime.

  2. Even setting that aside, DaemonSetManager.reconcileDaemonSet in pkg/ddc/cache/component/daemonset_manager.go only handles the not-found case (create). If the DaemonSet already exists, it just returns nil — no diff, no patch. Separately, DaemonSetManager.SyncComponentSpec is a stub that unconditionally returns an error ("client component does not support to be modified after created").

  3. CacheEngine.syncRuntimeSpec in pkg/ddc/cache/engine/sync.go — the function that does sync ongoing spec drift for Master/Worker via SyncComponentSpec — explicitly skips Client, with a comment claiming "Client component will be recreated when spec changes." No code anywhere actually implements that recreation.

Net effect: nothing in the codebase ever updates the Client DaemonSet after its first creation, despite comments in two separate files implying it should be handled.

To Reproduce

  1. Create a CacheRuntime with a Client component (e.g. following the curvine e2e sample) and wait for it to become ready.
  2. Edit runtime.spec.client.resources (or .tieredStore, or bump the runtime version) and apply the change.
  3. Observe: the Client DaemonSet's pod template is unchanged; no FUSE pods restart; no error surfaces in the runtime status or controller logs.

Expected behavior

Client spec changes should propagate to the DaemonSet the same way Master/Worker changes propagate via SyncComponentSpec, or the runtime should surface a clear error/warning if in-place update genuinely isn't supported for this field, rather than silently dropping the change.

Environment

  • Fluid: current master (post-CacheRuntime/AdvancedStatefulSet refactor)
  • Affects: pkg/ddc/cache/engine/client.go, pkg/ddc/cache/component/daemonset_manager.go, pkg/ddc/cache/engine/sync.go

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