k8up: やめたアプリの残り(noren・shadai)を通知の見張りから外す - #181
Conversation
noren は 09-12 に撤去、shadai は 09-16 に todoroku へ改名したが、通知は過去 8 日の (host, path) を「あるべきもの」とみなすので、窓が閉じるまで毎日 FAILED を出していた。 noren のスナップショットは消し(本人の指示)、shadai は改名前の履歴として残したまま restic の tag `retired` を付け、notify.js はその印の付いたものを見ない。手順と Job は README に Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JgGYf5qbjDXYhtzcpLsGvv
|
Claude finished @5ym's task in 2m 52s —— View job レビュー完了タスクリスト
全体所感小さく、動機と手順が README・コード両方にきちんと書かれていて追いやすい変更です。ロジックは狙いどおりに実装されています。 notify.yaml (notify.js)
README
軽微な指摘(要確認・ブロッカーではありません)
テスト
セキュリティ
|
| restic forget $(restic snapshots --host noren --compact | awk '/^[0-9a-f]{8} /{print $1}') | ||
| restic tag --host shadai --add retired | ||
| restic snapshots --compact --host noren --host shadai |
There was a problem hiding this comment.
要確認(軽微): -ec で動くスクリプトなので、166 行目の restic forget が失敗する(該当スナップショットが無く $() が空になり、restic が「ID もポリシーも無い」で落ちる、など)と 167 行目の restic tag --host shadai --add retired は実行されずスクリプトが終わります。noren の forget と shadai の tag は独立した操作なので、片方の失敗がもう片方を止めてしまう作りになっています。今回はログで成功を確認済みとのことなので実害は無いはずですが、このコマンド列をテンプレとして今後使い回す際に気づきにくい失敗モードだと思うので、|| true や 2 つの Job に分けるなどの余地があるかもしれません。ブロッカーではありません。
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JgGYf5qbjDXYhtzcpLsGvv
|
Claude finished @5ym's task in 1m 30s —— View job レビュー完了タスクリスト
全体所感追加コミット f04e4c7 は前回の指摘( apps/k8up/README.md(runbook スクリプト)
notify.yaml
README の表・見出し
セキュリティ
テスト
以上、追加対応で前回の指摘は解消されており、他に問題は見つかりませんでした。 |
何が起きていたか
k8up の日次通知が 6 件の FAILED を出していた: noren 3 本(154 時間前)と shadai 3 本(72 時間前)。noren は 09-12 に namespace ごと撤去、shadai は 09-16 に todoroku へ改名したもので、通知は過去 8 日に出てきた (host, path) を「あるべきもの」とみなすため、窓が閉じるまで鳴り続ける。
何をしたか
restic forget(消してよいとの指示)。shadai の 12 本は改名前の履歴として残し、restic tag --add retiredを付けた。Job は k8up namespace で 1 回流し、1 時間で消えるretiredタグの付いたスナップショットを数えない確認
次の 18:00 UTC の通知で OK になるはず。マージ後に
kubectl create job --from=cronjob/k8up-notifyで先に確かめる。🤖 Generated with Claude Code
https://claude.ai/code/session_01JgGYf5qbjDXYhtzcpLsGvv