Skip to content

fix(index): retry FTS write and delete failures on the next poll (doc, wiki, push) - #283

Merged
liplus-lin-lay merged 1 commit into
mainfrom
fix/282-fts-retry
Oct 13, 2026
Merged

liplus-lin-lay merged 1 commit into
mainfrom
fix/282-fts-retry

Conversation

@liplus-lin-lay

Copy link
Copy Markdown
Member

#282 の修正です。

  • 書き込み:doc / wiki の FTS5 upsert の失敗を握りつぶさず、upsert 全体を失敗にした。store の blobSha / contentHash は進まないので、次の poll でその資料をやり直す(doc は既存の failed > 0 による ETag 据え置きにそのまま乗る)
  • 削除:cron の doc / wiki reap と push 経路の doc 削除で、store 記録は最後に、他の面がすべて消えたときだけ消す。reap の候補は store から読むので、記録が残れば次の run でやり直される
  • doc の reap で部分失敗があった run は tree ETag を据え置く(Luna の指摘:進めると次の run が 304 で終わり、reap まで届かない)
  • テスト:失敗した run では store が残ること、次の run でやり直して最後に store が消えることを、doc / wiki / push の各経路で確認した。embed-doc の失敗伝播テストも新しく追加した
  • docs/0-requirements(英・日)の削除と ETag の節を更新した

#281 の全文索引には依存していません。

— Claude Lin

🤖 Generated with Claude Code

https://claude.ai/code/session_01GYtSBq9rYuBcTNmr473APb

doc / wiki の取り込みで FTS5 の書き込みに失敗したら upsert 全体を失敗扱いにし、store の版を進めないようにした。削除では store 記録を最後に、他の面がすべて消えたときだけ消すようにした(cron の doc / wiki reap と push 経路)。doc の削除が部分失敗した run は tree ETag を据え置き、次の run が実際にやり直す。これまでは、どちらの失敗でも FTS5 行が古いまま、または消えないまま二度と回収されなかった。Closes #282

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYtSBq9rYuBcTNmr473APb
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
✅ Deployment successful!
View logs
github-rag-mcp d64dd5b Oct 13 2026, 08:45 AM

@liplus-lin-lay liplus-lin-lay left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

セルフレビュー(auto モード)

  • 受け入れ条件:#282 の目的「更新・削除の途中で FTS だけが失敗しても、次の poll で回復する」を、doc / wiki / push の3経路それぞれで、失敗した run → 次の run でやり直し → store が最後に消える、という流れのテストで確かめた。doc では tree ETag の据え置きもテストで確かめた。CI(test / Workers Builds)は通過
  • 範囲:#282 の対象ファイル一覧には webhook.ts(push 経路)が入っていなかったが、同じ穴があるため、規則を一つにそろえる目的の範囲内として含めた。issue / コメント側の削除(webhook.ts:228 など)は store 記録を持たない別の作りなので、今回は対象外とした
  • 挙動の変化:Vectorize の削除だけが失敗した場合も store が残る。そのため、次の run で全部の面を消し直す(各面の削除は何度実行しても結果が同じなので害はない)
  • wiki は ETag ではなく巡回するカーソルで動いているので、失敗したページは次にそのページまで巡回が来たときに拾い直される(すぐではなく、いずれ拾われる)
  • ワークスペース側で後回しにした作業:なし
  • 次の手順:squash merge

— Claude Lin

@liplus-lin-lay
liplus-lin-lay merged commit 1e3b320 into main Oct 13, 2026
3 checks passed
@liplus-lin-lay
liplus-lin-lay deleted the fix/282-fts-retry branch October 13, 2026 08:46
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.

fix(index): let FTS write and delete failures retry on the next poll

1 participant