Skip to content

[#49]chore:バックエンド健全性調査のためのログ仕込みと exit/health 監視を追加#50

Closed
KimMaru10 wants to merge 1 commit into
masterfrom
investigate/49-backend-health-logging
Closed

[#49]chore:バックエンド健全性調査のためのログ仕込みと exit/health 監視を追加#50
KimMaru10 wants to merge 1 commit into
masterfrom
investigate/49-backend-health-logging

Conversation

@KimMaru10
Copy link
Copy Markdown
Owner

変更の概要

長時間稼働後にバックエンドが応答しなくなり「更新ボタンを押してもローディングが終わらない」事象 (#49) の原因切り分け用の観測強化。根本修正ではなく、再現を待ってログから仮説を絞り込めるようにする。

関連 Issue

変更の種類

  • その他(chore) - 調査用ログ・監視の追加

変更内容の詳細

src/main/backend.ts のみ。

  1. stdout/stderr 永続化: 子プロセスの stdout/stderr を app.getPath('logs')/backend.log に追記モードで pipe
  2. 主要イベントのログ化: spawn / exit / health 成功・失敗・復旧などをログに記録
  3. exit ハンドラ拡張: (code, signal) で受け、シグナル終了 (SIGTERM 以外) も「処理が予期せず終了しました」アラートの対象に含める。OOM kill / クラッシュも検知できるように
  4. health watcher: 起動完了後に 30 秒間隔で /api/health を ping。3 回連続失敗で OS 通知を 1 度だけ表示。復旧したら状態リセット
  5. res.resume(): 連続 health check で Keep-Alive socket が滞留しないよう response body を消費

安全性チェック

  • バックエンドの Echo middleware は method/uri/status/latency のみ出力する設定 (backend/cmd/main.go:51-53)。Authorization ヘッダや API トークンは stdout に乗らないことを確認済み

動作確認

  • ローカルで動作確認済み (型チェック通過、npm run dev 起動・停止サイクル正常)
  • 既存の機能に影響がないことを確認済み
  • テストを追加・更新済み(該当する場合) ← 観測用フックのため対象外

レビュアーへのメモ

  • ログのローテーション・サイズトリムは未実装。コード内に TODO(#49) を残してある。調査完了後に削除 or ローテーション機構の追加を判断
  • 通知は throttle 済み (healthNotifiedAt で 1 回に絞り、復旧でリセット)
  • マージ後、ローカルで npm run dev を起動したまま長時間放置し、再現を待ってログを ~/Library/Logs/Backnote/backend.log から確認する想定

チェックリスト

  • セルフレビュー済み (code-reviewer エージェントの Suggestion 3 件を反映)
  • コード規約に沿っている
  • デバッグ用の出力(console.log等)を削除済み
  • ハードコードされた認証情報・APIキーがない

長時間稼働後にバックエンドが応答しなくなり「更新を押すとローディングが
終わらない」事象の原因を切り分けるための観測強化。根本修正ではなく、
再現を待ってログから仮説を絞り込めるようにすることが目的。

- バックエンドの stdout/stderr を app.getPath('logs')/backend.log に追記
- spawn / exit / health 状態など主要イベントも同ログに記録
- exit ハンドラを (code, signal) で受け、シグナル終了 (SIGTERM を除く)
  も "処理が予期せず終了しました" のアラート対象に含める
- 起動完了後に 30 秒間隔の health watcher を開始し、3 回連続失敗で
  OS 通知を一度だけ表示。復旧したら状態リセット
- waitForHealth / watcher の HTTP レスポンスを res.resume() で消費して
  Keep-Alive socket の解放を保証
@KimMaru10
Copy link
Copy Markdown
Owner Author

@claude このプルリクエストをレビューしてください。

@claude
Copy link
Copy Markdown

claude Bot commented May 14, 2026

Claude encountered an error —— View job


I'll analyze this and get back to you.

@KimMaru10
Copy link
Copy Markdown
Owner Author

検証完了のためクローズする

@KimMaru10 KimMaru10 closed this May 14, 2026
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