Skip to content

Suprnova v0.7.1

Choose a tag to compare

@eas4ai eas4ai released this 27 Jul 14:46
· 231 commits to main since this release

A defect-fix pass over 0.7.0's queue routing, from a full post-release review.

Fixed

  • Chained jobs no longer lose their declared queue. ChainLink captured a
    job's max_tries, timeout, and backoff at chain-build time but not its
    Job::queue(), so a job that landed on its declared queue when pushed
    directly landed on default when dispatched as part of a chain — the "job"
    tier of the route → job → default resolution order silently vanished for
    chains. The declared queue is now captured on the link and resolved exactly
    like a direct push. Chain payloads written before this release decode
    unchanged (serde(default)), and a link with no declared queue serializes
    byte-identically to what 0.7.0 wrote.

  • Failed-job records carry the queue the job died on. The worker's
    dead-letter path hardcoded queue = "default" into every FailedJob
    record, so failures of a routed job were invisible to an operator filtering
    the failed store by the pool that owns them. The record now carries the
    envelope's queue (default for unrouted jobs).

  • The 0.7.0 upgrade note understated the jobs migration. It read
    "unfiltered workers are unaffected and need no migration", but
    DatabaseQueueDriver::push names the queue column in its INSERT
    whether or not the job is routed — a 0.7.0 binary against an un-migrated
    table fails every push, filtered or not. The 0.7.0 section below and
    manual/queues.md are corrected: on the database driver the ALTER TABLE
    is required for every deployment, and it must run before binaries roll
    (older binaries list their columns explicitly, so migrating first is safe).

  • README no longer advertises a #[job] macro. No such macro exists —
    jobs implement the Job trait. The queues row now describes the real
    surface, including 0.7.0's queue routing.

Changed

  • The release path now bumps README version references.
    bump-workspace-version.py rewrites the README's pinned install tag, the
    distribution-model example, and the MSRV line atomically with the
    manifests, and a reworded README that stops matching a pattern fails the
    release loudly. The README had advertised v0.6.0 since v0.7.0 shipped
    because nothing in the release path touched it.
  • Connection routing is documented as name-resolution only.
    Job::connection() and the connection field of Queue::route resolve the
    connection name carried on the JobQueueing / JobQueued lifecycle
    events; a single process-global driver still receives every push, so they
    do not select a different driver. The rustdoc and manual/queues.md
    previously implied driver selection that does not exist. The queue
    dimension is unaffected — it is honored end to end. Per-connection drivers
    remain future work.
  • ChainLink gained a public queue: Option<String> field, which breaks
    struct-literal construction of chain links. Links built through
    ChainLink::from_job — the normal path — are unaffected.

Upgrading

Coming from ≤ 0.6.x on the database queue driver, apply the 0.7.0 migration
below before rolling binaries; it is required for every deployment on
that driver, not just ones using --queue. 0.7.1 itself needs no migration.