Skip to content

v0.15.0

Latest

Choose a tag to compare

@GreedyKomodoDragon GreedyKomodoDragon released this 18 May 21:42
· 3 commits to main since this release
b1451d8

Summary

v0.15.0 focuses on runtime reliability and defensive behavior in the controller and DB layers, plus a substantial front-end performance and UX improvement. This release tightens queue/worker semantics, centralizes and sanitizes pod duration/exit heuristics, hardens DB reads/writes, and adds lazy-loading + skeletons and many unit tests to the UI.

Changes

Queue & memory retention

  • New context-aware API: PopWithContext / PopBatchWithContext implemented and
    Pop/PopBatch now delegate to them — queue pops respect cancellation/timeouts.
  • MemoryQueue: no longer retains popped elements (nil-out slots and periodic compaction
    using a head index) to avoid unbounded memory retention.
  • PebbleQueue:
    • Opens/validates the DB during construction and surfaces errors early.
    • Ensures head/tail counters are consistent on init (tail adjusted if behind head).
    • Notifies waiters reliably after pushes and records the last committed head
      position.

Workers, pod duration & exit handling

  • Centralized heuristics: computePodDurationAndExit consolidates logic for exit code,
    best-effort duration (seconds) and finished timestamp so metrics, DB writes and webhooks
    are consistent.
  • Defensive duration handling:
    • Avoids dereferencing nil Terminated states.
    • Estimates durations only when reasonable; prevents writing absurd durations.
    • For pods failing before container start, default exit code -1 is used; config
      errors use -2 in the config error path.
  • writeStatusToDB now consumes computePodDurationAndExit and only writes sane durations.
  • Improved log-collection flow: readiness checks and fetch bookkeeping prevent duplicate
    log uploads.
  • Safer pod deletion paths (background propagation, proper finalizer handling in config
    error flows).

Database & storage hardening

  • Postgres and SQLite managers:
    • Queries adjusted to include tasks even when there are no Task_Runs (LEFT JOIN
      fixes) so task lists are complete.
    • Task pod duration sanitization on read: absurd values (e.g., >10 years or negative)
      are treated as unknown and not exposed.
    • SQLite: new read-only connection helper with optional PRAGMA tuning and safer
      placeholder handling for parameterized IN-list queries.
    • GetIsSecrets and parameter-related lookups validate parameter existence and fail
      early with clear errors.

UI / Frontend

  • Loadable component: unified loading/error state wrapper (accepts optional skeleton
    placeholder).
  • Skeleton placeholders added across dashboard, Dags, DagRuns, Tasks, ManageUsers for
    better perceived performance.
  • Lazy-loading and chunking:
    • Route components and large vendor modules (e.g. dagViz) are lazy-loaded.
    • Manual chunking + code-splitting dramatically reduced main bundle size (main bundle
      reported reduced significantly in this change).
  • Numerous UI bugfixes: pagination, DagForm validations, ManageUsers cleanup, Log viewer
    dead-SVG removal, plus multiple component fixes for reactivity and caching.
  • Large addition of unit tests for Loadable, skeletons, dag components, task box,
    pagination, main/dags pages and log highlighting.