Skip to content

レジューム時のバックフィル実装 (タイマードリフト検出)#136

Merged
hideack merged 1 commit into
masterfrom
feature/resume-backfill
May 25, 2026
Merged

レジューム時のバックフィル実装 (タイマードリフト検出)#136
hideack merged 1 commit into
masterfrom
feature/resume-backfill

Conversation

@hideack

@hideack hideack commented May 24, 2026

Copy link
Copy Markdown
Owner

Summary

  • PCがスリープからレジュームした際、5分以上経過していた場合にバックフィルを自動発動する機能を追加
  • JavaScript のタイマードリフト検出(30秒間隔の setInterval で実経過時間を計測)を利用。スリープ中はタイマーが停止するため、予想より大幅に遅れて発火した場合にレジュームと判定する
  • 追加の npm パッケージなし、macOS / Linux どちらでも動作

Changes

  • 既存の起動時バックフィルのインラインブロックを runBackfill(label) 関数に抽出し、起動時・レジューム時で共通利用できるようにした
  • isBackfilling フラグで二重実行を防止(起動時バックフィルとレジューム検出が競合しない)
  • ログ出力に [Startup] / [Resume] ラベルを付けてどちらの経路か区別できるようにした

Detection mechanism

30秒ごとのタイマーが実際には5分以上後に発火
  → elapsed > RESUME_THRESHOLD_MS (5 * 60 * 1000)
  → "System resume detected. Running backfill..." を出力
  → runBackfill("[Resume]") を実行

Test plan

  • --log-sqlite オプション付きで起動し、PCをスリープ → 5分以上後にレジューム → "System resume detected. Running backfill..." が表示されることを確認
  • バックフィル実行中に再度レジュームしても二重実行されないことを確認(isBackfilling フラグ)
  • --log-sqlite なしの場合はレジューム検出ブロック自体がスキップされることを確認
  • 起動時バックフィル(既存動作)が引き続き正常に動作することを確認

🤖 Generated with Claude Code

PCがスリープ状態からレジュームした際に5分以上経過していた場合、
バックフィルを自動発動するようにした。
タイマードリフト検出(30秒間隔のsetIntervalで実経過時間を計測)を用いており、
追加依存ライブラリなしでクロスプラットフォームに動作する。

また、既存の起動時バックフィルロジックを runBackfill() 関数に抽出し、
isBackfilling フラグにより起動時・レジューム時の二重実行を防止した。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@hideack hideack merged commit 5e6c83b into master May 25, 2026
2 checks passed
@hideack hideack deleted the feature/resume-backfill branch May 25, 2026 00:50
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.

1 participant