Skip to content

4.6.0

Latest

Choose a tag to compare

@pooza pooza released this 14 Aug 21:45
b0995fb

**監視を「作り切る」リリース。**4.4.0 で仕組みを入れ、4.5.0 で穴を埋めたが、実際に起きたインシデントは検知できないままだった。基準にしたのは 2026-06 の Matrix 配信停止(#1455)で、3 月末から更新が止まっていたのに監視は最後まで緑だった。

目玉

宛先の一部にだけ配信できていない状態を検知する (#1504)

直近の「配信を試みた run」で delivered_count < attempted_count なら 503 に倒す。hooks を 2 つ持ち片方だけ失敗し続ける、という #1455 の形がこれで捕まる。

⚠ **解除は「次に全宛先へ届いた run」だけ。**取りこぼしたエントリは再送されないため、新着が無いことは失敗の解消にならない。

**宛先を組み立てられなかった場合も未達として数える。**各アクセサは生成時の例外を握って nil を返すので、上流が落ちている・429 を返す・URL のスキームが欠けている場合に宛先が黙って消え、配信ゼロのまま緑になっていた。

サイレント不発を確認して緑に戻せるようにする (#1505)

しきい値を完璧に当てにいくのをやめ、いったん赤にして運用者が bin/shrieker source ack ID で確認して緑に戻せるようにした。確認は「今回は問題なかった」の記録であって「今後も問題ない」の保証ではないので、さらに silence_tolerance が経過すれば再び赤になる。

修正

  • フィード取得の間欠 404 が再送されず、5 ソースが恒常的に赤くなる問題を修正 (#1500)
  • /healthz が DB エラー時に壊れる問題を修正(ASCII-8BIT の error_message・json 3.0 で顕在化)(#1469)
  • 部分失敗 1 件で run 全体が error になり、日次 cron のソースが 24 時間 503 に貼り付く問題を修正 (#1482)
  • FeedSource の last_delivered_at fallback が前進し続け、silent? が永久に false になる問題を修正 (#1483)
  • /healthz/source/:iddisable? を見ておらず、スキーマの免除規定と食い違う問題を修正 (#1486)
  • 配信より手前で落ちた失敗が「宛先未達」に化け、宛先が健全でも赤に貼り付く問題を修正 (#1504)

セキュリティ

ドキュメント

  • /dest/hooks のオブジェクト形式(channel / room_id)を追記 (#1492)
  • matrix-webhook のリンクを現行 org へ修正 (#1491)

移行にあたって

**migration 011 / 012 が起動時に走る。**011 は配信計測より前の source_run_log 行を一度だけ捨てる(本番実測で 19,765 / 105,205 行。全行が消えるソースは 0 件)。**どちらも不可逆(down なし)**なので、切り戻す可能性があるなら DB のバックアップを先に取ること。

⚠ デプロイ順序は pull → 再起動 → CLI で固定する。マイグレーションを走らせるのはデーモンの起動時だけなので、再起動前に source ack を叩くと silence_ack が無くて落ちる。