What is your environment(Kubernetes version, Fluid version, etc.)
- Fluid:
master (controller image built from 676f47a, chart v1.1.0-676f47a)
- Kubernetes: Kind, fails on all tested versions — v1.22.17 / v1.24.17 / v1.30.13 / v1.33.2
- Curvine image:
curvine/curvine-fluid:latest (community-provided, floating tag)
- CI:
E2E Functionality Check → kind-e2e-test → step Fluid basic e2e tests
- Failing run: https://github.com/fluid-cloudnative/fluid/actions/runs/29186069855
Describe the bug
The e2e testcase curvine cache runtime basic e2e (test/gha-e2e/curvine/test.sh) fails consistently on all Kind K8s versions, and on PRs that change no relevant code (observed on the pure chart-version-bump PR #6115, and on unrelated branches). This indicates the failure is not caused by the PR under test.
curvine-dataload never reaches Complete within the 60s wait and stays in Executing; the loader Job repeatedly recreates pods that all exit 1. All four loader pods in the diagnostic bundle (pods-default/curvine-dataload-loader-job-*-dataloader.log) fail identically:
Loading file to Curvine
Source path: /minio
❌ Error: [curvine-demo-master] ERROR: load job for CV path /minio requires UFS-only metadata
(curvine-server/src/master/job/job_runner.rs:108):
Error: load /minio failed.
The DataLoad command defined in test/gha-e2e/curvine/cacheruntimeclass.yaml runs cv load /minio --watch immediately after the UFS mount (s3://test → /minio), but the Curvine master rejects the load job because the path has no "UFS-only metadata" loaded first.
What you expect to happen:
curvine-dataload reaches Complete and the curvine e2e passes.
How to reproduce it
Run the E2E Functionality Check workflow on any recent commit, or run test/gha-e2e/curvine/test.sh locally. It fails at wait_dataload_completed "curvine-dataload" (test/gha-e2e/curvine/test.sh:287):
>>> test "curvine cache runtime basic e2e" failed: dataload curvine-dataload status is Executing, not complete for 60s!
Additional Information
Likely root cause on the Fluid integration side:
- Missing metadata-load step before
cv load. Curvine requires the UFS path's metadata to be present before a load job can run. Fluid already has this concept (spec.loadMetadata / FLUID_DATALOAD_METADATA, see docs/*/samples/data_warmup.md and cacheruntime_data_operations.md), but the curvine CacheRuntimeClass DataLoad command only runs cv load $p --watch and neither performs a metadata-load step nor consumes FLUID_DATALOAD_METADATA; the e2e dataload.yaml also does not set spec.loadMetadata: true.
- Floating image tag. All curvine components and the loader use
curvine/curvine-fluid:latest (test/gha-e2e/curvine/cacheruntimeclass.yaml lines 52 / 78 / 102), with no digest pin, so upstream image changes can silently break e2e regardless of Fluid code — consistent with the failure appearing across unrelated PRs.
Suggested fixes:
- Add a metadata-load / listing step before
cv load in the DataLoad command (and/or have the command honor FLUID_DATALOAD_METADATA, with the e2e setting spec.loadMetadata: true).
- Pin
curvine/curvine-fluid to a fixed tag/digest in the e2e manifests, so upstream drift is decoupled from Fluid CI.
Information for the Curvine community
Since curvine/curvine-fluid:latest is community-provided, the following may help maintainers analyze whether this is intended behavior or a regression:
- Curvine image:
curvine/curvine-fluid:latest (pulled fresh; behavior may have changed vs. an earlier :latest).
- Error origin:
curvine-server/src/master/job/job_runner.rs:108 — load job for CV path /minio requires UFS-only metadata.
- Command that triggers it (from Fluid's
CacheRuntimeClass DataLoad spec):
cv load /minio --watch --conf ${CURVINE_CONF_DIR}/curvine-cluster.toml
- Mount setup: UFS
s3://test (MinIO, endpoint_url=http://minio:9000, region_name=us-east-1, path_style=true) is mounted to CV path /minio via mountUfs.sh (/app/curvine/mountUfs.sh, timeout 120s) shortly before the load job is submitted.
- Loader topology warning (also present in every loader pod log — unsure if relevant):
WARNING: No master pods found in topology, using generated journal address list:
[{'id': 1, 'hostname': 'curvine-demo-master-0.svc-curvine-demo-master.default.svc.cluster.local', 'port': 8996}]
Questions for Curvine maintainers:
- Is "load job requires UFS-only metadata" an intended precondition, i.e. must metadata be explicitly loaded/synced (e.g. via a separate
cv subcommand) before cv load <ufs-path>? If so, what is the recommended command/flag?
- Did the precondition or the
cv load semantics change recently in curvine-fluid:latest?
- Is the "No master pods found in topology" warning related to the load job being rejected?
What is your environment(Kubernetes version, Fluid version, etc.)
master(controller image built from676f47a, chartv1.1.0-676f47a)curvine/curvine-fluid:latest(community-provided, floating tag)E2E Functionality Check→kind-e2e-test→ stepFluid basic e2e testsDescribe the bug
The e2e testcase
curvine cache runtime basic e2e(test/gha-e2e/curvine/test.sh) fails consistently on all Kind K8s versions, and on PRs that change no relevant code (observed on the pure chart-version-bump PR #6115, and on unrelated branches). This indicates the failure is not caused by the PR under test.curvine-dataloadnever reachesCompletewithin the 60s wait and stays inExecuting; the loader Job repeatedly recreates pods that allexit 1. All four loader pods in the diagnostic bundle (pods-default/curvine-dataload-loader-job-*-dataloader.log) fail identically:The DataLoad command defined in
test/gha-e2e/curvine/cacheruntimeclass.yamlrunscv load /minio --watchimmediately after the UFS mount (s3://test→/minio), but the Curvine master rejects the load job because the path has no "UFS-only metadata" loaded first.What you expect to happen:
curvine-dataloadreachesCompleteand the curvine e2e passes.How to reproduce it
Run the
E2E Functionality Checkworkflow on any recent commit, or runtest/gha-e2e/curvine/test.shlocally. It fails atwait_dataload_completed "curvine-dataload"(test/gha-e2e/curvine/test.sh:287):Additional Information
Likely root cause on the Fluid integration side:
cv load. Curvine requires the UFS path's metadata to be present before a load job can run. Fluid already has this concept (spec.loadMetadata/FLUID_DATALOAD_METADATA, seedocs/*/samples/data_warmup.mdandcacheruntime_data_operations.md), but the curvineCacheRuntimeClassDataLoad command only runscv load $p --watchand neither performs a metadata-load step nor consumesFLUID_DATALOAD_METADATA; the e2edataload.yamlalso does not setspec.loadMetadata: true.curvine/curvine-fluid:latest(test/gha-e2e/curvine/cacheruntimeclass.yamllines 52 / 78 / 102), with no digest pin, so upstream image changes can silently break e2e regardless of Fluid code — consistent with the failure appearing across unrelated PRs.Suggested fixes:
cv loadin the DataLoad command (and/or have the command honorFLUID_DATALOAD_METADATA, with the e2e settingspec.loadMetadata: true).curvine/curvine-fluidto a fixed tag/digest in the e2e manifests, so upstream drift is decoupled from Fluid CI.Information for the Curvine community
Since
curvine/curvine-fluid:latestis community-provided, the following may help maintainers analyze whether this is intended behavior or a regression:curvine/curvine-fluid:latest(pulled fresh; behavior may have changed vs. an earlier:latest).curvine-server/src/master/job/job_runner.rs:108—load job for CV path /minio requires UFS-only metadata.CacheRuntimeClassDataLoad spec):s3://test(MinIO,endpoint_url=http://minio:9000,region_name=us-east-1,path_style=true) is mounted to CV path/minioviamountUfs.sh(/app/curvine/mountUfs.sh, timeout 120s) shortly before the load job is submitted.Questions for Curvine maintainers:
cvsubcommand) beforecv load <ufs-path>? If so, what is the recommended command/flag?cv loadsemantics change recently incurvine-fluid:latest?