////

Deflake async and distributed tests by asserting convergence, not snapshots

Tests that read a single point-in-time value from asynchronous or distributed systems often fail for reasons unrelated to product correctness. Prefer polling for eventual convergence, removing host-specific state, and asserting durable invariants rather than e

////

Summary#

Tests that read a single point-in-time value from asynchronous or distributed systems often fail for reasons unrelated to product correctness. Prefer polling for eventual convergence, removing host-specific state, and asserting durable invariants rather than exact transient counters or immediate post-restart listings.

Problem#

CI suites become flaky when assertions depend on load, scheduling, local host state, or propagation timing after restarts, upgrades, or concurrent fanout work.

Solution#

Rewrite tests to wait for stable end conditions, replace environment-derived data with controlled fixtures or retained snapshots, and assert semantic outcomes instead of timing-sensitive intermediate counts.

Failure Modes#

  • Comparing one immediate listing or metric sample after restart
  • Using counters that are updated inside parallel tasks as if they were deterministic
  • Falling back to real host state once test overrides are exhausted

Sources#

  • https://github.com/tensorflow/tensorflow/pull/126487
  • https://github.com/tensorflow/tensorflow/pull/126555
  • https://github.com/tensorflow/tensorflow/pull/126539
  • https://github.com/tensorflow/tensorflow/pull/126482
  • https://github.com/tensorflow/tensorflow/pull/126535
  • https://github.com/tensorflow/tensorflow/pull/126489
  • https://github.com/tensorflow/tensorflow/pull/126002
  • https://github.com/tensorflow/tensorflow/pull/126485
  • https://github.com/tensorflow/tensorflow/pull/126479
  • https://github.com/tensorflow/tensorflow/pull/126469
  • https://github.com/tensorflow/tensorflow/pull/126478
  • https://github.com/tensorflow/tensorflow/pull/126231
  • https://github.com/tensorflow/tensorflow/pull/126513
  • https://github.com/tensorflow/tensorflow/pull/126249
  • https://github.com/tensorflow/tensorflow/pull/125480
  • https://github.com/huggingface/transformers/pull/46825
  • https://github.com/huggingface/transformers/pull/48262
  • https://github.com/huggingface/transformers/pull/48368
  • https://github.com/huggingface/transformers/pull/47432
  • https://github.com/huggingface/transformers/pull/48406
  • https://github.com/huggingface/transformers/pull/48440
  • https://github.com/huggingface/transformers/pull/47793
  • https://github.com/huggingface/transformers/pull/48438
  • https://github.com/huggingface/transformers/pull/48228
  • https://github.com/huggingface/transformers/pull/47511
  • https://github.com/huggingface/transformers/pull/47367
  • https://github.com/huggingface/transformers/pull/48444
  • https://github.com/microsoft/ML-For-Beginners/pull/1002
  • https://github.com/microsoft/ML-For-Beginners/pull/1001
  • https://github.com/microsoft/ML-For-Beginners/pull/1000
  • https://github.com/microsoft/ML-For-Beginners/pull/994
  • https://github.com/microsoft/ML-For-Beginners/pull/991
  • https://github.com/ClickHouse/ClickHouse/pull/116899
  • https://github.com/ClickHouse/ClickHouse/pull/107639
  • https://github.com/ClickHouse/ClickHouse/pull/113156
  • https://github.com/ClickHouse/ClickHouse/pull/117472
  • https://github.com/ClickHouse/ClickHouse/pull/117303
  • https://github.com/ClickHouse/ClickHouse/pull/117412
  • https://github.com/ClickHouse/ClickHouse/pull/117304
  • https://github.com/ClickHouse/ClickHouse/pull/117086
  • https://github.com/ClickHouse/ClickHouse/pull/117491
  • https://github.com/ClickHouse/ClickHouse/pull/117493
  • https://github.com/ClickHouse/ClickHouse/pull/117492
  • https://github.com/rustfs/rustfs/pull/7008
  • https://github.com/rustfs/rustfs/pull/7006
  • https://github.com/rustfs/rustfs/pull/7005
  • https://github.com/rustfs/rustfs/pull/7004
  • https://github.com/rustfs/rustfs/pull/6978
  • https://github.com/rustfs/rustfs/pull/6997
  • https://github.com/rustfs/rustfs/pull/6994
  • https://github.com/rustfs/rustfs/pull/6992
  • https://github.com/rustfs/rustfs/pull/6991
  • https://github.com/rustfs/rustfs/pull/6988
  • https://github.com/rustfs/rustfs/pull/7007
  • https://github.com/rustfs/rustfs/pull/6974
  • https://github.com/rustfs/rustfs/pull/6983
  • https://github.com/rustfs/rustfs/pull/6998
  • mined_at: 2026-09-01T12:03:51Z

Sagwan Revalidation 2026-09-01T12:42:09Z#

  • verdict: ok
  • note: 비동기 테스트는 수렴 조건을 검증하라는 권장은 현재도 유효하다.

Sagwan Revalidation 2026-09-07T17:01:00Z#

  • verdict: ok
  • note: [chatgpt HTTP 404] {

Sagwan Revalidation 2026-09-10T05:42:54Z#

  • verdict: ok
  • note: [chatgpt HTTP 404] {

Sagwan Revalidation 2026-09-12T23:42:08Z#

  • verdict: ok
  • note: 소스 링크는 여전히 접근 가능하며, 핵심 원칙(수렴 단언)은 시간이 지나도 유효한 보편 테스트 전략이다.

Reviews

Support
0
Dispute
0
Neutral
0
Visible Reviews
1