Skip to content

feat(worker): auto-purge processed events on mark_processed in WebhookStore DO#235

Merged
liplus-lin-lay merged 1 commit into
mainfrom
234-featworker-re-port-auto-purge-of-processed-events-to-webhookstore-do
Jun 25, 2026
Merged

feat(worker): auto-purge processed events on mark_processed in WebhookStore DO#235
liplus-lin-lay merged 1 commit into
mainfrom
234-featworker-re-port-auto-purge-of-processed-events-to-webhookstore-do

Conversation

@liplus-lin-lay

Copy link
Copy Markdown
Member

概要

DO 移行 (#71) で失われた auto-purge 機能 (#29 / PR#30) を Durable Objects 版 WebhookStore に再移植する。処理済み webhook イベントの無制限蓄積による DO ストレージ肥大を止める。

変更内容

  • worker/src/store.ts: mark_processed 実行時に processed=1 かつ received_at が保持期間より古いイベントを DELETE。未処理イベントは保持期間に関わらず削除しない。戻り値に削除件数 purged を追加。env 型は StoreEnv としてローカル最小定義し、index.tsEnv への循環 import を回避。
  • worker/wrangler.toml: [vars]PURGE_AFTER_DAYS = "7" を追加(保持期間, 既定 7 日, 0 で即削除)。
  • worker/test/workers/store.test.ts: 既存 mark-processed テストは絶対日付 received_at が 7 日 purge で即削除され壊れるため、received_at を now 相対に変更して新挙動へ整合。purge 検証テストを 3 本追加(保持期間超過の処理済み削除 / 未処理は残す / purged 件数)。
  • docs/0-requirements.md, docs/0-requirements.ja.md: auto-purge 仕様を復活(F2.4 自動削除 / F3.5 purged 戻り値 / N2.7 PURGE_AFTER_DAYS 構成)。

完了条件の対応

  • mark_processed 時に保持期間超過の processed イベントが削除される
  • PURGE_AFTER_DAYS で保持期間を設定可能(既定 7 日)
  • 保持期間内の processed イベントは残る(テストで検証)
  • unprocessed イベントは保持期間に関わらず残る(テストで検証)
  • mark_processed 戻り値に purged 件数が含まれる
  • docs に auto-purge 仕様が復活している
  • 既存 store.test.ts が新挙動に整合して全て green

テスト

ローカルで npm test 全 green(tsx 単体 54 / DO テスト 28)。wrangler deploy --dry-run 成功、PURGE_AFTER_DAYS ("7") バインド確認済み。

scope out

  • TenantRegistry quota (events_stored) の decrement 連動は本 PR の対象外(軸が別, 別 issue 候補)。
  • DO Alarms による定期 purge は将来拡張。本 PR は feat: purge processed events from events.json #29 に忠実に mark_processed トリガのみ。

Refs #29 #71
Closes #234

DO 移行 (#71) で失われた auto-purge 機能 (#29) を WebhookStore DO に再移植する。
mark_processed 実行時に processed=1 かつ received_at が保持期間 (PURGE_AFTER_DAYS 日,
既定 7) より古いイベントを DELETE し, 処理済み死蔵行による DO ストレージ肥大を止める。
未処理イベントは保持期間に関わらず削除しない。戻り値に削除件数 purged を追加した。

env 型は store.ts にローカル最小定義 (StoreEnv) し index.ts の Env への循環 import を避けた。
wrangler.toml の [vars] に PURGE_AFTER_DAYS=7 を追加。docs/0-requirements{,.ja}.md に
auto-purge 仕様 (F2.4 / F3.5 purged 戻り値 / N2.7 構成) を同一 PR で復活させた。

既存 store.test.ts の mark-processed テストは絶対日付 received_at が 7 日 purge で即削除
され壊れるため, received_at を now 相対に変更して新挙動へ整合させた。保持期間超過の処理済み
削除 / 未処理は残す / purged 件数の検証テストを追加 (DO テスト 25→28)。

Refs #29 #71
Closes #234
@liplus-lin-lay liplus-lin-lay linked an issue Jun 25, 2026 that may be closed by this pull request
7 tasks
@liplus-lin-lay liplus-lin-lay self-assigned this Jun 25, 2026
@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-webhook-mcp 289bfe3 Jun 25 2026, 05:01 PM

@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.

AI セルフレビュー (auto mode / 親)

差分を確認し、完了条件 7 項目すべて達成を確認。

  • purge ロジック: mark_processed 時に processed=1 AND received_at < cutoff を DELETE。cutoff = now - PURGE_AFTER_DAYS 日。received_at/cutoff とも ISO8601 UTC で文字列順序比較が時系列順と整合 (received_at は ingest 側でサーバ生成、クライアント非制御)。
  • 未処理イベントは age に関わらず保持 (テスト purge-keeps-unprocessed で検証)。
  • 戻り値 purged 件数 = cursor.rowsWritten。
  • env: DurableObject + ローカル最小型で循環 import 回避。PURGE_AFTER_DAYS 未設定/非数値/負値は既定 7 にフォールバック、0 は即削除。
  • 既存テスト整合: 旧 mark-processed テストを now 相対 received_at に修正。pending-events テストは e3 が purge されても pending から外れる主張は不変で green 維持。
  • scope: quota decrement 連動は意図的に対象外 (別軸、別 issue 候補)。
  • 成果物言語: PR/commit title とも ASCII。

判定: PASS。auto mode につき squash merge を実行する。

@liplus-lin-lay liplus-lin-lay merged commit 60309aa into main Jun 25, 2026
3 checks passed
@liplus-lin-lay liplus-lin-lay deleted the 234-featworker-re-port-auto-purge-of-processed-events-to-webhookstore-do branch June 25, 2026 17:04
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.

feat(worker): re-port auto-purge of processed events to WebhookStore DO

1 participant