Skip to content

jobs list crashes on managed_load job type (SDK enum missing variant) #160

@anoop-narang

Description

@anoop-narang

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinghigh

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions