Flaky: note_vector_flow_test 'forty notes' under parallel test load
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
Start with test/integration/note_vector_flow_test.dart, the test named "forty notes are each found first by their own text", and the drained() helper and fake embedder it uses. Reproduce by running the file repeatedly under --concurrency=4 and record the found count on any failure, which separates a drain race from ANN recall misses. Done means the flake is explained with evidence and either the assertion or the drain wait is changed so repeated parallel runs pass.
索引モデルが issue の本文から書いたものです。
説明
Summary
test/integration/note_vector_flow_test.dart › "forty notes are each found first by their own text" failed once during a full-suite run at --concurrency=4 (all other runs pass). Root cause not confirmed; filing so it is tracked rather than rediscovered.
What I verified
- Passes in isolation and 3 of 3 repeated runs of the file at
--concurrency=4, and in 3 full-suite runs of #88 work. - The failure was observed once, while the full suite was running 4 test files in parallel. I did not capture the assertion output (
foundcount) at the time.
Likely causes (hypotheses, not proven)
- Timing under CPU contention: the test publishes 40 notes then waits on
drained(); the fake embedder awaits a 2 msFuture.delayedper note and the test has a 2-minute timeout. Under 4-way parallel isolates plus tostore's own isolate,drained()may return before the last vector is flushed, orask()can run while the index is still being built. - tostore index state: AGENTS/CLAUDE notes that tostore 3.5 ANN search returns 99-100% recall (not 100%) on stored vectors; with 40 near-identical "alpha beta" tails an ANN miss would give
found == 39. A genuine 99% recall figure makes this assertion (found == 40) inherently probabilistic.
Suggested next steps
- Re-run the file in a loop (50x) under
--concurrency=4and recordfoundon failure to tell (1) from (2). - If it is ANN recall, relax the assertion to a threshold (for example ≥ 38 of 40) or make the test deterministic by querying with the exact stored vector.
- If it is a drain race, have
drained()also wait for the store's flush.
Not a product bug as far as I can tell; it is CI flakiness risk. Refs #88
- 主要言語
- Dart
- スター
- 2
- フォーク
- 2
- 平均マージ
- 1日 7時間
- マージ済み PR(30日)
- 35
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
basictech01/uniun のほかの issue
-
bug good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
basictech01/uniun#300 ·
メンテナーはふだん 1 日以内に返信
-
enhancement good first issue P2-Medium
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
basictech01/uniun#296 ·
メンテナーはふだん 1 日以内に返信
-
bug good first issue P2-Medium
難易度 4/5 1〜2日 初心者へのやさしさ 22/100
basictech01/uniun#293 ·
メンテナーはふだん 1 日以内に返信
-
bug P1-High
難易度 4/5 3〜5日 初心者へのやさしさ 18/100
basictech01/uniun#286 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
enhancement P2-Medium
難易度 5/5 1週間以上 初心者へのやさしさ 10/100
basictech01/uniun#276 ·
メンテナーはふだん 1 日以内に返信
basictech01/uniun の issue をすべて見る
似ている issue
-
bug
難易度 1/5 1時間未満 初心者へのやさしさ 65/100
chriskelly/wish-together#36 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
AppFlowy-IO/AppFlowy#9075 ·
-
Paste asks for iOS paste permission because the default context menu ignores SystemContextMenu対応中かも @dorklein が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
maheshj01/searchfield#267 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 67/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
hajisensai/Fushi#2340 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信