Affects
- OpenMetadata 1.13.x (
pipelineServiceClientConfig.type: k8s, bundled io.kubernetes:client-java 24.0.0)
- Kubernetes 1.36 (AWS EKS); reproducible on any Kubernetes newer than the bundled client models
Describe the bug
On clusters newer than the bundled client-java models, K8sPipelineClient fails to read pod/job status. Listing pods/jobs throws an IllegalArgumentException during response deserialization, because pod status carries fields the models don't define:
The field `allocatedResources` in the JSON string is not defined in the `V1PodStatus` properties.
JSON: {"observedGeneration":1,"phase":"Running","conditions":[...]}
This is a RuntimeException, not an ApiException, so it is uncaught and surfaces as HTTP 400 from GET /api/v1/services/ingestionPipelines/status. In the UI, the database service Agents/Ingestion tab is blank. The queued-status and ingestion-log paths parse pods the same way and are affected too.
To Reproduce
- Deploy OM 1.13.x with
pipelineServiceClientConfig.type: k8s on Kubernetes ≥ 1.34.
- Open a database service → Agents tab (or
GET /api/v1/services/ingestionPipelines/status).
- Endpoint returns 400; UI shows no agents.
Expected behavior
Cluster access is fine (the API call succeeds; only client-side model deserialization fails), so the status endpoint should not 400 and the Agents tab should render.
Notes on fix
A client-java version bump is not durable — the latest (26.0.0, ~k8s 1.34) still trails current Kubernetes, and there is no public lenient/ignore-unknown-fields switch. Making K8sPipelineClient tolerant of client-side deserialization failures is version-independent. PR incoming.
Affects
pipelineServiceClientConfig.type: k8s, bundledio.kubernetes:client-java24.0.0)Describe the bug
On clusters newer than the bundled
client-javamodels,K8sPipelineClientfails to read pod/job status. Listing pods/jobs throws anIllegalArgumentExceptionduring response deserialization, because pod status carries fields the models don't define:This is a
RuntimeException, not anApiException, so it is uncaught and surfaces as HTTP 400 fromGET /api/v1/services/ingestionPipelines/status. In the UI, the database service Agents/Ingestion tab is blank. The queued-status and ingestion-log paths parse pods the same way and are affected too.To Reproduce
pipelineServiceClientConfig.type: k8son Kubernetes ≥ 1.34.GET /api/v1/services/ingestionPipelines/status).Expected behavior
Cluster access is fine (the API call succeeds; only client-side model deserialization fails), so the status endpoint should not 400 and the Agents tab should render.
Notes on fix
A
client-javaversion bump is not durable — the latest (26.0.0, ~k8s 1.34) still trails current Kubernetes, and there is no public lenient/ignore-unknown-fields switch. MakingK8sPipelineClienttolerant of client-side deserialization failures is version-independent. PR incoming.