Skip to content

acc: deflake dashboard read-after-deploy retry#5895

Open
pietern wants to merge 1 commit into
mainfrom
deflake-dashboard-retry
Open

acc: deflake dashboard read-after-deploy retry#5895
pietern wants to merge 1 commit into
mainfrom
deflake-dashboard-retry

Conversation

@pietern

@pietern pietern commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

The bundle/resources/dashboards acceptance test flaked on cloud: after deploy, reads of a just-renamed/updated dashboard hit eventual consistency, and retry.py's default ~2s window (5 × 500ms) wasn't enough.

  • retry.py: On exhaustion, the old loop passed the last attempt's stdout through as if valid even when a --until/--until-not condition never held — masking the flake as a downstream output diff. Now, an unmet content condition writes stale output to stderr and exits non-zero (retry: condition not met after N attempts); success and the no-condition case pass output through on stdout unchanged.
  • test.toml: Widen the window to RETRY_MAX_ATTEMPTS=20 / RETRY_INTERVAL_MS=1000 (~20s). retry.py's loop isn't scaled by TimeoutCIMultiplier, and real cloud eventual consistency regularly exceeds the ~2s default.

This pull request and its description were written by Isaac.

The bundle/resources/dashboards acceptance test flaked on cloud: after
deploy, reads of a just-renamed/updated dashboard hit eventual consistency
and retry.py's default window (5 attempts x 500ms ~= 2s) wasn't enough.

retry.py: correct condition handling on exhaustion. The old loop always
fell through to writing the last attempt's stdout to stdout, even when a
--until/--until-not condition was never satisfied, letting stale output
pass through as if valid and masking the flake as a downstream output diff.
Now: on success, write the successful attempt's output to stdout and exit;
if a content condition was requested but never met, write the stale output
to stderr (never stdout) and exit non-zero; with no content condition, pass
the final attempt's output and exit code through unchanged.

test.toml: widen the retry window to RETRY_MAX_ATTEMPTS=20 and
RETRY_INTERVAL_MS=1000 (~20s). retry.py's loop isn't scaled by
TimeoutCIMultiplier (that only scales the overall test timeout), and real
cloud rename/update eventual consistency regularly exceeds the ~2s default.

Co-authored-by: Isaac
@pietern pietern temporarily deployed to test-trigger-is July 10, 2026 12:12 — with GitHub Actions Inactive
@pietern pietern temporarily deployed to test-trigger-is July 10, 2026 12:12 — with GitHub Actions Inactive
@pietern pietern requested review from denik and janniklasrose July 10, 2026 12:12
@pietern pietern enabled auto-merge July 10, 2026 12:13
@github-actions

Copy link
Copy Markdown
Contributor

Approval status: pending

/acceptance/bundle/ - needs approval

Files: acceptance/bundle/resources/dashboards/test.toml
Suggested: @denik
Also eligible: @shreyas-goenka, @andrewnester, @anton-107, @janniklasrose, @lennartkats-db

General files (require maintainer)

Files: acceptance/bin/retry.py
Based on git history:

  • @denik -- recent work in acceptance/bundle/resources/dashboards/, acceptance/bin/

Any maintainer (@andrewnester, @anton-107, @denik, @shreyas-goenka, @simonfaltum, @renaudhartert-db, @janniklasrose) can approve all areas.
See OWNERS for ownership rules.

@eng-dev-ecosystem-bot

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: 1b1dbbf

Run: 29091836460

Env 💚​RECOVERED 🙈​SKIP ✅​pass 🙈​skip Time
💚​ aws linux 4 4 230 1077 5:31
💚​ aws windows 4 4 232 1075 7:18
💚​ aws-ucws linux 4 4 314 995 5:32
💚​ aws-ucws windows 4 4 316 993 7:21
💚​ azure linux 4 4 230 1076 4:50
💚​ azure windows 4 4 232 1074 7:06
💚​ azure-ucws linux 4 4 316 992 5:35
💚​ azure-ucws windows 4 4 318 990 7:00
💚​ gcp linux 4 4 229 1078 5:09
💚​ gcp windows 4 4 231 1076 6:56
8 interesting tests: 4 RECOVERED, 4 SKIP
Test Name aws linux aws windows aws-ucws linux aws-ucws windows azure linux azure windows azure-ucws linux azure-ucws windows gcp linux gcp windows
💚​ TestAccept 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
🙈​ TestAccept/bundle/invariant/no_drift 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/vector_search_endpoints/drift/recreated_same_name 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/vector_search_indexes/recreate/embedding_dimension 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/ssh/connection 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
💚​ TestFetchRepositoryInfoAPI_FromRepo 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
💚​ TestFetchRepositoryInfoAPI_FromRepo/root 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
💚​ TestFetchRepositoryInfoAPI_FromRepo/subdir 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
Top 10 slowest tests (at least 2 minutes):
duration env testname
6:07 aws-ucws windows TestAccept
6:01 aws windows TestAccept
5:58 azure windows TestAccept
5:58 gcp windows TestAccept
5:55 azure-ucws windows TestAccept
3:01 aws linux TestAccept
2:56 gcp linux TestAccept
2:53 azure linux TestAccept
2:49 azure-ucws linux TestAccept
2:47 aws-ucws linux TestAccept

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants