Skip to content

notes キャッシュの実体/タイムライン所属の分離(複数 TL 所属とキー不一致の解消) #30

Description

@hitalin

前提

現在の notes キャッシュは 1 ノートにつき 1 つのタイムライン種別しか保持できず、複数のタイムラインに属するノート(home ∩ social など)は最後に書き込んだタイムラインへ所属が付け替わる。また、REST 取得とストリーミング受信とでキャッシュに書き込むタイムラインキーの形式が一致しておらず、リスト・アンテナ・チャンネル・ロールではストリーミング受信分が読み出しに乗らない(孤児化)。

いずれも混入バグの直因ではないが、復帰時・オフライン時のキャッシュ表示が「薄くなる・揺れる」方向の症状に寄与している。hitalin/notedeck#651 の調査で判明(同 issue の「関連(別症状)」節参照)。

対症療法ではなくデータモデルとして理想形に組み直したい。

やってほしいこと

  • ノート実体(正本 1 行)とタイムライン所属(1 ノート N バケット)を分離し、同一ノートが複数のタイムラインに属せるようにする
  • タイムラインキーの正本を notecli 内の型に一元化し、REST・ストリーミングの両書込を同一の ingest 経路に統一する(層ごとのキー手組みを廃止)
  • トリム・GC を所属単位に再設計する(実体はどこからも参照されなくなったら掃除)
  • 可視性・ミュート等はキャッシュに焼き込まず、読み出し側の述語で処理する現行方針を維持する
  • β 方針につき後方互換は残さず移行する

論点(議論してから着手)

  • 実体行の GC 方針(参照消失時の掃除と TTL の併用でよいか)
  • 正規キーをフロントへどう配るか(フェッチ・購読コマンドの戻り値に含める範囲)
  • 取得済み連続区間(セグメント)の記録まで持つか — gap 検知は UI 層の復帰フェッチが既に担っているため、今回は見送りが妥当と考えている
  • notedeck 側の読み出しコマンドのシグネチャを維持するか(維持すれば cross-repo 影響は rev pin bump 程度)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions