Skip to content

hotfix: wiki ingestion exhausts Worker subrequest budget on initial bulk poll #130

Closed

Description

@liplus-lin-lay

観測

W4 (#128 / PR #129) deploy 後、Cloudflare Worker logs で多発:

```
wikiExists probe failed for Liplus-Project/dipper_ai: Too many subrequests by single Worker invocation
fetchWikiContent probe md/markdown/mediawiki/org/rst/rest/textile/pod/asciidoc/creole failed
for Liplus-Project/github-rag-mcp/installation.ja: Too many subrequests by single Worker invocation
```

原因

`pollWiki` 1 cron invocation で 5 repo × N pages × 10 extension probe を直列実行。Cloudflare Workers の per-invocation subrequest 上限 (1000) を初回 bulk poll で軽く突破。

具体的な subrequest 増加因子:

  • repo ごとに wikiExists 1 + listWikiPages 1 (= 2/repo)
  • 新規 page ごとに最大 10 拡張子 probe (cached extension が無いため)
  • 5 repos に展開すると、page 数が中規模 wiki (e.g., installation 系 + tips 数件 = 10〜20 page/repo) でも 5 × 20 × 10 = 1000 超

修正方針

  1. WIKI_EXTENSIONS を実態主流の `md` / `markdown` のみに限定(mediawiki / org / rst 等は将来 follow-up)
  2. MAX_WIKI_PAGES_PROBED_PER_REPO_PER_RUN = 20 を導入。1 cron 1 repo あたりの新規 probe 数を硬く capping、bulk import を複数 cron に分散
  3. cached extension がある page は引き続き 1 fetch で済む(既存ロジック維持)

これで 5 repos × 20 pages × max 2 extensions + overhead = ~210 subrequests に収まる。Cloudflare Workers Paid (1000/invocation) で安全マージン。

constraints

  • 既存 schema 不変(types.ts / store.ts touch せず)
  • 既存 pageが`wiki_doc` として既に index されているケース: cached extension で fetch、影響なし
  • バージョン: hotfix patch (v0.8.5)

target files

  • `src/poller.ts` — WIKI_EXTENSIONS 定数縮小 + MAX_WIKI_PAGES_PROBED_PER_REPO_PER_RUN 追加 + pollWiki 内で cap 適用

関連

Activity

  1. added this to the milestone on Apr 26, 2026
  2. added
    bug動いていない、壊れている
    ready本文が実装開始できる形まで収束している状態。ただし更新は継続可能
    on Apr 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug動いていない、壊れているready本文が実装開始できる形まで収束している状態。ただし更新は継続可能

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions