• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

astronomer / astro-cli / 39324684834
61%
main: 45%

Build:
Build:
LAST BUILD BRANCH: v2-build-on-locked-runtime
DEFAULT BRANCH: main
Ran 19 Oct 2026 09:09PM UTC
Jobs 1
Files 344
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

19 Oct 2026 09:05PM UTC coverage: 60.312% (+0.001%) from 60.311%
39324684834

push

github

web-flow
Bound a docker start's compose up, and let compose report a dead database (#2362)

* Bound a docker start's compose up by the health timeout

`astro local start --docker` could hang for good instead of failing at
ASTRO_LOCAL_HEALTH_TIMEOUT. The Airflow services depend on db-migration
completing, so `compose up --detach` waits inside itself; the runtime
entrypoint waits on postgres's port with no limit; and a postgres that
never listens (crash-looping under restart: unless-stopped, e.g. on a data
directory a newer major initialized) keeps it waiting. The health timeout
was only applied after the up returned, so it never started.

The up is now two steps. `up --no-start --quiet-pull` pulls what is missing
and creates the containers, bounded only by the caller, so a cold pull is
not charged to the budget (and, unlike `compose pull`, it leaves cached and
locally built images alone, so offline starts still work). Then
`up --detach` runs under the health timeout, and the health wait gets what
it left: one budget for "Airflow comes up".

When the budget runs out inside the up, the start fails with an error that
wraps ErrHealthTimeout (so --output json and the CLI's advice classify it
as before), names what was pending from `compose ps -a`, and quotes the
stuck service's last distinct log lines. It is then rolled back exactly as
a failed up already was: torn down when this start created the containers,
left alone (and named) when it did not. Ctrl-C keeps its plain error and
the same cleanup.

The tier-3 case for a docker health timeout that keeps its containers used
a 1ms budget, which now ends the start in the up; it now gives the up time
and runs an API server that never answers. A new tier-3 case reproduces the
hang with a postgres that exits at once.

Co-Authored-By: Claude <noreply@anthropic.com>

* Name the crash-looping service on podman too

On podman the up-deadline error quoted db-migration's "waiting for
postgres" instead of postgres's own refusal.... (continued)

4 of 4 new or added lines in 2 files covered. (100.0%)

40964 of 67920 relevant lines covered (60.31%)

303.91 hits per line

Jobs
ID Job ID Ran Files Coverage
1 39324684834.1 19 Oct 2026 09:09PM UTC 344
60.31
GitHub Action Run
Source Files on build 39324684834
  • Tree
  • List 344
  • Changed 3
  • Source Changed 3
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #39324684834
  • cd5e5e36 on github
  • Prev Build on v2 (#39324087316)
  • Next Build on v2 (#39334347029)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc