GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Flaky: dynamodb retry_tests fail intermittently in merge queue (a_long_retry_loop_turns_unhealthy_after_the_threshold, the_retry_budget_is_exact) · Issue #7828 · feldera/feldera

Flaky: dynamodb retry_tests fail intermittently in merge queue (a_long_retry_loop_turns_unhealthy_after_the_threshold, the_retry_budget_is_exact) #7828

New issue
Copy link
New issue
Copy link
Closed
Closed
Flaky: dynamodb retry_tests fail intermittently in merge queue (a_long_retry_loop_turns_unhealthy_after_the_threshold, the_retry_budget_is_exact)#7828
Copy link
Assignees
bestouff
Labels
connectorsIssues related to the adapters/connectors crateIssues related to the adapters/connectors cratefred-observeTest failure diagnosed by the fred-observe botTest failure diagnosed by the fred-observe bot

Description

@mythical-fred-oss
mythical-fred-oss
bot
opened on Nov 4, 2026
Issue body actions

Verdict: likely flaky, not reproduced locally. Moderate confidence.

What happened

Merge queue run for PR #7736 failed job Adapter Tests / Test Adapters (gke-runners-arm64, aarch64, aarch64-unknown-linux-gnu), dropping the PR from the queue:

---- integrated::dynamodb::test::retry_tests::a_long_retry_loop_turns_unhealthy_after_the_threshold stdout ----
thread '...' panicked at crates/connectors/src/integrated/dynamodb/test.rs:3161:9:
assertion failed: harness.publisher.reports().is_empty()

---- integrated::dynamodb::test::retry_tests::the_retry_budget_is_exact stdout ----
thread '...' panicked at crates/connectors/src/integrated/dynamodb/test.rs:2664:13:
assertion `left == right` failed
  left: 2
 right: 1

(841 passed; 2 failed, log lines 1703-1751)

Both tests were added by PR #7736's own commit c82f565 ("Keep a DynamoDB step after one chunk fails, report health late"), which also introduced the 500ms unhealthy_after threshold these tests exercise.

What I checked

  • crates/connectors/src/integrated/dynamodb/test.rs:3161 asserts no health report exists right after a chunk enters its first retry wait, racing against a 500ms real-wall-clock threshold (a_long_retry_loop_turns_unhealthy_after_the_threshold). Under CI scheduling jitter, that margin could plausibly be exceeded before the assertion runs.
  • the_retry_budget_is_exact (line 2664) is otherwise deterministic (no real delay, unhealthy_after is Duration::ZERO), so the extra BatchWriteItem request (2 instead of 1) is harder to explain from the retry-budget logic itself, which reads correctly (exhausted() is checked before sending any retry).
  • Ran cargo test --locked -p dbsp_connectors --lib integrated::dynamodb::test::retry_tests:: at PR tip 13 times, including several runs with ~60 concurrent CPU-saturating processes to simulate a loaded runner. All passed every time; could not reproduce either failure.
  • This was the only merge-queue run so far for PR [connectors] Retry DynamoDB writes through throttling and report health #7736, so there's no prior run to compare against, and no other open fred-observe issue references these tests.

Next step

Since the failure didn't reproduce locally (even under synthetic load), the most likely explanation is CI-runner specific timing (arm64 runner contention) exposing the tight 500ms margin in a_long_retry_loop_turns_unhealthy_after_the_threshold. If this recurs, consider:

  • Widening the margin/threshold in that test, or synchronizing on the "overdue" event instead of asserting emptiness immediately after entering the retry.
  • Checking whether the_retry_budget_is_exact's extra request could come from a connection-level retry (e.g. wiremock/hyper) rather than the connector's own retry loop.

Re-queueing is likely to pass given the tests are new, timing-sensitive, and did not reproduce.

Activity

  1. mythical-fred-oss
    added
    connectorsIssues related to the adapters/connectors crateIssues related to the adapters/connectors crate
    fred-observeTest failure diagnosed by the fred-observe botTest failure diagnosed by the fred-observe bot
    on Nov 4, 2026
  2. mythical-fred-oss
    assigned
    bestouff
    on Nov 4, 2026
  3. mythical-fred-oss commented on Nov 4, 2026

    @mythical-fred-oss
    mythical-fred-ossBot
    on Nov 4, 2026
    ContributorAuthor
    More actions

    Recurred, same assertion: run 41850195763, retry_tests::a_long_retry_loop_turns_unhealthy_after_the_threshold panics at test.rs:3161 (assertion failed: harness.publisher.reports().is_empty()), log lines 1704-1727. the_retry_budget_is_exact did not fail this time.

    Per the "if this recurs, widen the margin" suggestion above: pushed a fix on fred/observe-7736-41850195763 (0df319db0), raising unhealthy_after in that test from 500ms to 3s. Verified green across repeated runs, including under ~60 concurrent CPU-saturating processes. Posted to PR #7736 for the author to cherry-pick.

  4. bestouff
    added 4 commits that reference this issue on Nov 4, 2026

    [connectors] Assert the early health check only before the threshold

    bfabcc0

    [connectors] Widen the unhealthy_after margin in a_long_retry_loop_tu…

    ac8c49c

    [connectors] Give each DynamoDB mock test its own server, not a poole…

    e5babd2

    [connectors] Assert the early health check only before the threshold

    0cb9f7a
  5. bestouff commented on Nov 5, 2026

    @bestouff
    bestouff
    on Nov 5, 2026
    Contributor
    More actions

    Fixed by #7838, merged to main through #7736: unpooled mock server per test, and the early health assertion no longer races the wall clock.

  6. bestouff
    closed this as completedon Nov 5, 2026
  7. Karakatiza666
    added 3 commits that reference this issue on Nov 5, 2026

    [connectors] Widen the unhealthy_after margin in a_long_retry_loop_tu…

    93757e9

    [connectors] Give each DynamoDB mock test its own server, not a poole…

    c838b3a

    [connectors] Assert the early health check only before the threshold

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

Metadata

Metadata

Assignees

  • @bestouff
    bestouff

Labels

connectorsIssues related to the adapters/connectors crateIssues related to the adapters/connectors cratefred-observeTest failure diagnosed by the fred-observe botTest failure diagnosed by the fred-observe bot

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    You are visitor 01402503 — GeezerVison does not store the pages you look up.
    Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.