Summary
hotdata jobs list crashes with a deserialization error whenever a managed_load job is present in the result set. The generated SDK JobType enum is missing the managed_load variant that the server emits (and has no #[serde(other)] fallback), so the entire response fails to parse.
Reproduction
With a managed database (any databases load creates a managed_load job):
hotdata jobs list --all
# error parsing response: unknown variant `managed_load`, expected one of `noop`,
# `data_refresh_table`, `data_refresh_connection`, `dataset_refresh`, `create_index`,
# `create_dataset_index`
hotdata jobs list (active-only) also crashes while a managed_load job is pending/running (e.g., during a large load). It does not crash when there are no active jobs, because the default path filters to status=pending,running.
hotdata jobs list --status succeeded / --all always crash if any managed_load job exists in history.
Workaround that works: hotdata jobs list --all --job-type create_index (typed filter; server never returns managed_load rows). hotdata jobs <id> also works (single job, not the unknown variant).
Expected
jobs list lists all jobs, including managed_load jobs.
Root cause
Schema drift between server and the generated Rust SDK:
- The server defines/serializes
managed_load (runtimedb/src/engine/jobs/mod.rs), and it is present in runtimedb/openapi.yaml (JobType enum). So the spec is correct.
- The bundled SDK enum
JobType in hotdata-<ver>/src/models/job_type.rs (the hotdata crate the CLI depends on) declares only 6 variants and lacks ManagedLoad. It derives serde::Deserialize with no #[serde(other)] catch-all, so any response row with job_type=managed_load fails the whole response parse.
- The CLI's own mappings also omit it:
parse_job_type (src/jobs.rs) and the clap value_parser (src/command.rs) don't list managed_load, so it can't even be used as a --job-type filter.
Suggested fix
- Regenerate the SDK from the current
openapi.yaml so JobType includes ManagedLoad, and add managed_load to the CLI's --job-type filter list.
- Harden against future server variants by adding
#[serde(other)] (or a catch-all Unknown(String)) to the SDK enum so an unknown job type degrades gracefully instead of failing the whole jobs list.
Environment
hotdata CLI 0.5.0 (built from main), against runtimedb production. managed_load confirmed present in runtimedb openapi.yaml.
Summary
hotdata jobs listcrashes with a deserialization error whenever amanaged_loadjob is present in the result set. The generated SDKJobTypeenum is missing themanaged_loadvariant that the server emits (and has no#[serde(other)]fallback), so the entire response fails to parse.Reproduction
With a managed database (any
databases loadcreates amanaged_loadjob):hotdata jobs list(active-only) also crashes while a managed_load job is pending/running (e.g., during a large load). It does not crash when there are no active jobs, because the default path filters tostatus=pending,running.hotdata jobs list --status succeeded/--allalways crash if anymanaged_loadjob exists in history.Workaround that works:
hotdata jobs list --all --job-type create_index(typed filter; server never returns managed_load rows).hotdata jobs <id>also works (single job, not the unknown variant).Expected
jobs listlists all jobs, includingmanaged_loadjobs.Root cause
Schema drift between server and the generated Rust SDK:
managed_load(runtimedb/src/engine/jobs/mod.rs), and it is present inruntimedb/openapi.yaml(JobType enum). So the spec is correct.JobTypeinhotdata-<ver>/src/models/job_type.rs(thehotdatacrate the CLI depends on) declares only 6 variants and lacksManagedLoad. It derivesserde::Deserializewith no#[serde(other)]catch-all, so any response row withjob_type=managed_loadfails the whole response parse.parse_job_type(src/jobs.rs) and the clap value_parser (src/command.rs) don't listmanaged_load, so it can't even be used as a--job-typefilter.Suggested fix
openapi.yamlsoJobTypeincludesManagedLoad, and addmanaged_loadto the CLI's--job-typefilter list.#[serde(other)](or a catch-allUnknown(String)) to the SDK enum so an unknown job type degrades gracefully instead of failing the wholejobs list.Environment
hotdata CLI 0.5.0 (built from main), against runtimedb production.
managed_loadconfirmed present in runtimedbopenapi.yaml.