Skip to content

v0.18.4

Choose a tag to compare

@github-actions github-actions released this 23 Oct 14:21
· 72 commits to main since this release

What's Changed

Upgrade notes — read before you roll out

  • Migration 053 (two new indexes on job): the server builds them at startup inside one transaction, and writes to job wait while each index scans the table. On a large database, build them first with CREATE INDEX CONCURRENTLY, as described in Migration 053. After that pre-run the migration is a no-op. ([b6f3063])
  • The leader lease needs PostgreSQL 14 or later: on an older database the leader logs one warning and runs without the lease (validity and self-release still apply). ([050a200])
  • /livez fails on a stopped background loop on every replica, followers included (before, only on the leader). With one replica and no liveness probe (Docker Compose, probes off), a loop that exits now stops all leader work until a restart; set leader.self_release_after_secs: 0 for such a deployment. ([76dde86])
  • An empty templated ref: now means "no ref": upgrade every server replica before you rely on it. A replica on 0.18.3 or older still fails such a step and answers 400 to such a webhook. ([5436d21])
  • GET /api/workspaces/{ws}/triggers fails closed (an error, not an unfiltered list) when the ACL context cannot be loaded. ([0007464])

Features

  • Linux ARM64 releases: each release now has aarch64-unknown-linux-gnu archives of stroem-server, stroem-worker, stroem and stroem-api, built natively on GitHub's ARM runners. The release images ghcr.io/fremvaerk/stroem-{server,worker,runner}:X.Y.Z (and X.Y, X) are multi-arch (linux/amd64 + linux/arm64). The sha-* images built from main stay linux/amd64 only. ([75ac29e])
  • Trigger run status: the workspace page shows each trigger's last run and its result, and scheduler triggers show how many runs were missed (for example while no replica was leader). The task page shows the same missed-runs mark, and a new Dashboard card lists the triggers that need attention (GET /api/triggers/attention). Only the trigger's own next run clears the mark. A run you may not view stays hidden. ([0007464], [1677e96], [729fcef], [b7d61a7], [b6f3063])
  • Workspace display name and description: workspaces.<name>.display_name and .description in the server config (env overrides work). The Workspaces list, the workspace page, GET /api/workspaces, MCP list_workspaces and stroem-api workspaces show them. ([c728864], [cb116c3], [6625c47])
  • Later runs of a job: job detail gains derived_jobs[], the Restarts and Re-runs made from a job, and the job page links them in a "Later runs" card that stays current while a later run is live. ([44074bd], [021bd81], [6fd6639])
  • Configurable leader settings: a new leader: section, lease_secs (default 30) and self_release_after_secs (default 30, 0 = off). All other leader timings come from the lease. ([76dde86], [771aafa])
  • Optional branch from an input: a templated ref: that renders empty (for example ref: "{{ input.branch | default(value='') }}") runs the flow step, the type: task step or the webhook job as if ref: were absent, instead of failing the step. ([5436d21], [9e9055c])

Bug Fixes

  • A frozen leader no longer blocks all leader work: in production a node went silent while its kernel kept the database session alive, so its replica held the leader lock for 16.5 hours and every cron trigger was missed. The leader session now runs with idle_session_timeout (the lease), a replica acts as leader only while its pings succeed, and a leader whose scheduler, recovery or event-source loop is stalled or stopped releases the lock. Followers log who holds the lock and warn when the holder looks stale. ([050a200], [76dde86])
  • One dispatcher per type: task step: two concurrent advances could both start a child job for the same ready type: task step. A dispatcher now claims the step first, and a dispatcher that lost cannot fail the step that another one dispatched. ([6340526], [c2d3bac])
  • Docs links: the llms.txt / llms-full.txt sidebar links and about 190 content links no longer 404 on the docs site, and the links inside the llms files are absolute. ([c56ea02], [096a87d], [c0f6cec], [dc57ef4])

Documentation

  • Installation lists the real archive names (stroem-server-…, stroem-worker-…, stroem-…, stroem-api-…) for both Linux targets, says that stroem-server needs OpenSSL 3, and removes the macOS and Windows rows (those binaries are not published). ([1e98e9f], [7d42585], [808763d])
  • New guides: trigger last run and missed runs, leader lease and settings (High availability), workspace display names, empty templated refs. ([f18cf05], [7eb6950], [cd5c28a], [b500763], [9e9055c])

Internal

  • CodeQL runs as an advanced setup that excludes test code; unit tests that carry fixture secrets moved to sibling tests.rs files. ([5388504])
  • The shared test database runs on postgres:15-alpine. ([3076ed8])

Full Changelog: v0.18.3...v0.18.4