Skip to content

enableFanoutTimeline をトグルすると、 タイムラインからノートが取りこぼされる #17547

@fruitriin

Description

@fruitriin

💡 Summary

管理画面で enableFanoutTimelineON → OFF → ON のように切り替えると、 OFF 期間中に投稿されたノートが Redis 上のキャッシュリストに乗らないまま、 ON 復帰後の新規投稿だけが追加される状態になる。 結果、 Redis 上の時系列にギャップが生じ、 タイムライン API のレスポンスから OFF 期間の投稿が 永久に取りこぼされる (untilId を進めて深掘りしても出てこない)。

🥰 Expected Behavior

enableFanoutTimeline のトグル前後で投稿されたノートはすべて、 タイムライン API (notes/timeline, channels/timeline 等) から DB の真値どおりに取得できる。

🤬 Actual Behavior

OFF 期間中に投稿されたノートが永久に取得不能になる。 ページネーションで深掘りしてもスキップされ続ける。

📝 Steps to Reproduce

  1. 管理画面で enableFanoutTimelineON にする (既定値)
  2. テストユーザーで 5 件のノートを連続投稿する (例: seed 1seed 5)
  3. 管理画面で enableFanoutTimelineOFF に切り替える
  4. さらに 5 件のノートを連続投稿する (例: seed 6seed 10)
  5. 管理画面で enableFanoutTimelineON に戻す
  6. さらに 5 件のノートを連続投稿する (例: seed 11seed 15)
  7. notes/timelinelimit=20 で叩く
  8. 期待: 15 件すべて返る / 実際: seed 11seed 15seed 1seed 5 の 10 件のみ、 OFF 期間中の seed 6seed 10 が欠落

💻 Frontend Environment

クライアント実装に依存しません (バックエンドのレスポンスが問題)。

  • Misskey: 2026.5.4 develop

🛰 Backend Environment (for server admin)

  • Installation Method or Hosting Service: development environment (pnpm dev)
  • Misskey: 2026.5.4 develop
  • Node: 22.15.0
  • PostgreSQL: 15
  • Redis: 7
  • OS and Architecture: macOS Darwin 25.3.0 arm64

Do you want to address this bug yourself?

  • Yes, I will patch the bug myself and send a pull request

修正は 2 つの PR で用意 (独立に merge 可能):

詳細な原因分析・用語解説・自然発生経路の網羅はフォーク側の Issue (fruitriin#38) を参照。

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions