Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[2023.10.1.beta-1] アップグレード以前にTLを遡れない #11958

Closed
fruitriin opened this issue Oct 3, 2023 · 57 comments
Closed

[2023.10.1.beta-1] アップグレード以前にTLを遡れない #11958

fruitriin opened this issue Oct 3, 2023 · 57 comments
Labels
packages/backend Server side specific issue/PR

Comments

@fruitriin
Copy link
Contributor

fruitriin commented Oct 3, 2023

💡 Summary

世界5分前仮説

https://misskey.systems

10月3日21時43分ごろより前のノートを主要な導線で見ることができない

お気に入りやクリップからなら見ることができるので、データが消滅したわけではないらしい

🥰 Expected Behavior

アップデート前のノートも見ることができる

🤬 Actual Behavior

過去のノートを見ることができない

📝 Steps to Reproduce

  1. TLを表示する

📌 Environment

💻 Frontend

  • Model and OS of the device(s):
  • Browser:
  • Server URL:
  • Misskey:
    13.x.x

🛰 Backend (for server admin)

  • Installation Method or Hosting Service:
  • Misskey: 2o23.10.1.beta1
  • Node: v18.17.1 ←古い!
  • PostgreSQL: 15.x.x
  • Redis: 7.x.x
  • OS and Architecture: Ubuntus
@fruitriin fruitriin added the ⚠️bug? This might be a bug label Oct 3, 2023
@syuilo
Copy link
Member

syuilo commented Oct 3, 2023

これは意図したものになります🙏

@syuilo syuilo added packages/backend Server side specific issue/PR and removed ⚠️bug? This might be a bug labels Oct 3, 2023
@fruitriin
Copy link
Contributor Author

えっ

@syuilo
Copy link
Member

syuilo commented Oct 3, 2023

TLがPush型に変更されたからPushされない限り表示されない

@fruitriin
Copy link
Contributor Author

https://misskey.systems/@fruitriin
自分の投稿したノートも遡ることができない?

@syuilo
Copy link
Member

syuilo commented Oct 3, 2023

そうね、それが特に重かったため

@syuilo
Copy link
Member

syuilo commented Oct 3, 2023

今後投稿されていく分は遡り可能

@acid-chicken
Copy link
Member

長期運用したらその方が重くならない?

@fruitriin
Copy link
Contributor Author

🤯

@tkmrgit
Copy link

tkmrgit commented Oct 3, 2023

これ仕様ににゃったらあちこちで混乱起きるのでは

@fruitriin
Copy link
Contributor Author

リアルタイムに今そのときにいるユーザーとのやりとりを楽しむ分にはよいのだけど、過去のノートを資産と捉えているユーザーが一定数いるので過去の投稿のマイグレーション手段がほしい

@CAT5NEKO
Copy link

CAT5NEKO commented Oct 3, 2023

タイムラインを遡って交流を楽しむっていう挙動を封じて、特定の投稿を探し当てて表示させるようにするっていう方法になってしまうと、SNSというよりも「検索データベース」になってしまうのではないでしょうか。😭
偶然の出会いが乏しいのは処理向上の期待を上回る懸念点であると思います。

@syuilo
Copy link
Member

syuilo commented Oct 3, 2023

タイムラインを遡って交流を楽しむっていう挙動を封じて、特定の投稿を探し当てて表示させるようにするっていう方法になってしまう

どういうことかしら?
これから投稿されるものは遡りは可能

@syuilo
Copy link
Member

syuilo commented Oct 3, 2023

以前から遡りできる範囲は限られている

@syuilo
Copy link
Member

syuilo commented Oct 3, 2023

なのでマイグレーションしたとしてもマイグレーションされた投稿が遡れなくなるまでの数日〜数週間便利になるだけだからモチベーションとしては低いかも?

@CAT5NEKO
Copy link

CAT5NEKO commented Oct 3, 2023

POST型採用した以前にしか投稿してない方は探さないと全く表示されなくなる?

@tkmrgit
Copy link

tkmrgit commented Oct 3, 2023

以前から遡りできる範囲は限られている

そうかにゃ?もっと見る操作繰り返せば一番最初まで戻れたように思うけどにゃ?

@kakkokari-gtyih

This comment was marked as off-topic.

@syuilo
Copy link
Member

syuilo commented Oct 3, 2023

  • 遡れる範囲に制限があるのは昔から(API的にもクライアントの負荷的にも)
  • これから投稿されるものは従来通り遡り可能
  • 今遡れる範囲にあるものをマイグレーションしたとしても結局しばらく経つとそれらの投稿は遡れなくなる(前述したように古い投稿は遡れなくなるのは昔からの仕様)から効果は少なそう

@VillSnow
Copy link

VillSnow commented Oct 3, 2023

さかのぼれる範囲が限られていると言うのは具体的にどのような範囲ですか?

@tkmrgit
Copy link

tkmrgit commented Oct 3, 2023

[ノート]タブでは見える投稿が[全て]タブに出てこないのはバグ? → #11960

@CAT5NEKO
Copy link

CAT5NEKO commented Oct 3, 2023

あるユーザーのより過去の投稿を遡って読みたい利用者が現れた時のために、プロフにTL読み込ませるボタン設けておいたらニーズに応えられるかも

@slofp
Copy link
Contributor

slofp commented Oct 3, 2023

横からですいません

遡れる範囲に制限があるのは昔から

notes/local-timelineなどは10日前までを取得するような制限がありましたがusers/notesの場合はそのような制限がないので実質過去すべての投稿が見れるようになっていました。

@tkmrgit
Copy link

tkmrgit commented Oct 3, 2023

notes/local-timelineなどは10日前までを取得するような制限がありましたがusers/notesの場合はそのような制限がないので実質過去すべての投稿が見れるようになっていました。

やっぱりそんな感じした。前に1年前くらいまで遡って見れた覚えがあったので

@kakkokari-gtyih
Copy link
Contributor

users/notes などを遡れないのはキツい(ユーザーページの投稿は遡ることが多い)

@VillSnow
Copy link

VillSnow commented Oct 3, 2023

横からですいません

遡れる範囲に制限があるのは昔から

notes/local-timelineなどは10日前までを取得するような制限がありましたがusers/notesの場合はそのような制限がないので実質過去すべての投稿が見れるようになっていました。

私の経験と一致しますね

@yuriha-chan
Copy link
Contributor

そもそも、Redisに無限にたまっていくと容量的にきつくなりそうですし、事故でオンメモリデータベースが吹き飛んだときに大変になるので、Redis になかったらデータベースを見に行く実装がよさそうです。

@syuilo
Copy link
Member

syuilo commented Oct 3, 2023

難しそう

@yuriha-chan
Copy link
Contributor

yuriha-chan commented Oct 6, 2023

#11976 こんな感じの実装でよいですかね…?
(実装というより、必要なところをrevertしただけですが)

@grarich
Copy link

grarich commented Oct 7, 2023

push型のTLにすること自体はいいと思うけれど、新しくリモートサーバーの人をフォローするときに過去のTLが見れないので何を上げていたのかわからない。

#11958 (comment)
にもある通りユーザーのTLは遡れるように実装してあったほうが良さそう。
(実装が可能かどうかは不明)

@syuilo
Copy link
Member

syuilo commented Oct 7, 2023

新しくリモートサーバーの人をフォローするときに過去のTLが見れないので何を上げていたのかわからない。

これって今まで見れていたっけ?

@grarich
Copy link

grarich commented Oct 7, 2023

新しくリモートサーバーの人をフォローするときに過去のTLが見れないので何を上げていたのかわからない。

これって今まで見れていたっけ?

ローカルからリモート参照するのは見れません(subしていないので当たり前だと思っています。)
リモートで表示したときに見れるかどうかですね。
今まではリモートで表示から閲覧することで過去TLを参照できていましたが、push型に変更になったあとはピン留め以外が見れません。

@syuilo
Copy link
Member

syuilo commented Oct 7, 2023

修正しました 🙏🏻

@grarich
Copy link

grarich commented Oct 7, 2023

修正しました 🙏🏻

有難うございます🙏🏻🙏🏻🙏🏻

この修正でアップデート前のTLも全部見れたので意図した修正か確認するといいかもしれません。
また、ユーザーのハイライトの場所にも取得できているノートを表示してもらえたらTLを遡れない問題も解決されるような気がします。

@fruitriin
Copy link
Contributor Author

みすてむず、プロフィールから過去のノートまでみれるようになった(beta-7の次まで入れた)

@grarich
Copy link

grarich commented Oct 14, 2023

みすてむず、プロフィールから過去のノートまでみれるようになった(beta-7の次まで入れた)

これまた取れなくなったね。。

@ityuki
Copy link

ityuki commented Oct 18, 2023

ここにつなげても良いのかな……?

通常TL系が遡れないのは遡れるようにすると負荷増えるって話は聞いているのですが、ローカルタイムラインで生きてるようなサーバだと、ローカルTL消えるのは、かなりしんどいです。

各TLに対して、Redis になかったらデータベースを見に行く実装を管理者権限からオプションで出来るようにしてほしいです……

@syuilo
Copy link
Member

syuilo commented Oct 18, 2023

PR募集中🙏

@syuilo
Copy link
Member

syuilo commented Oct 18, 2023

ローカルTLの遡りできなくなるのは流速にもよるけど1日程度だからそんなに影響はなさそうな気がする

@ityuki
Copy link

ityuki commented Oct 18, 2023

のんびりLTLで話すタイプのインスタンスだと、1週間分ぐらい出てるのは普通なので、一時的にしろ消えてなくなるのは、しんどかったです

少人数インスタンスの方が影響範囲が大きそうな気はします

@ityuki
Copy link

ityuki commented Oct 18, 2023

ふと思ったのですが、流速あればローカルTLがほとんどredisに乗るのであれば、チェックボックスとか無しでも負荷はかかりにくいのでは……

@syuilo
Copy link
Member

syuilo commented Oct 18, 2023

投稿が数億くらいになってくるとそれでも負荷は無視できなくなってくる

@ityuki
Copy link

ityuki commented Oct 18, 2023

表現悪くてすみません。

ローカルTL表示するのに、DBにアクセスしに行く処理って、規模の大きいサーバだとユーザが意図しない限り起きないのでは?(普段見る部分は全部redisにいるのでは?) と思いました。

@syuilo
Copy link
Member

syuilo commented Oct 18, 2023

たしかに

@ityuki
Copy link

ityuki commented Oct 18, 2023

規模の大きいサーバ
 → 普段見える部分は全部redisに残るので、ユーザが意図しない限りDBにはアクセス行かない
規模の小さいサーバ
 → 見たい部分はDBにいることも多いが、規模が小さいのでDBにアクセスしに行ってもたかがしれている

とすれば、特にチェックボックスとか無くて、「redisに無ければDBに読みに行く」を実装しても問題ないかなぁと思いました

@syuilo syuilo closed this as completed in 6cc02fe Oct 18, 2023
@tai-cha
Copy link
Contributor

tai-cha commented Oct 18, 2023

これってリストTLは対応しない感じでしょうか?
そうなるとredisがリセットされた際や2023.9.3までからのアプデ後、相変わらずリストTLは遡れなくなるかなと思ったのですが

@syuilo
Copy link
Member

syuilo commented Oct 18, 2023

リストに関しては今のところ対応予定ないわね

@tai-cha
Copy link
Contributor

tai-cha commented Oct 18, 2023

なるほど

@anatawa12
Copy link
Member

STLどのような感じですか?パージが入ったことにより、新たにフォローしてリロードするとSTLからHTL成分が消えそうな気がするのですが

@syuilo
Copy link
Member

syuilo commented Oct 18, 2023

修正しました 🙏🏻

@tetradice
Copy link

tetradice commented Oct 21, 2023

同じ問題にハマる人がいるかもしれないため、v2023.10.2で私が遭遇した問題をここでコメント・共有させていただきます。
(Issueとして上げたかったのですが、手順内にバージョンアップを含むことから、再現できるかどうかの確認が難しかったので……)

  1. v2023.10.1にバージョンアップして、ソーシャルタイムラインに過去のノートが表示されなくなる
  2. ノートを1つ以上新規投稿
  3. v2023.10.2にバージョンアップする

という手順を踏むと、2)で投稿したノートのみしかソーシャルタイムラインに表示されず、過去のノートが表示されないままとなる現象が起きました。

暫定対応として、redis-cliコマンドからauth→flushallでredis内のデータを全削除することで、再びソーシャルタイムラインに過去のノートが表示されるようになりました。
※ただしこれにより、過去のプッシュ通知の履歴はすべて削除されてしまうようです

@tai-cha
Copy link
Contributor

tai-cha commented Oct 21, 2023

アンテナや通知を残しながらTLのキャッシュを消したい場合に

redis-cli KEYS "list:homeTimeline*" | xargs redis-cli DEL
redis-cli KEYS "list:localTimeline*" | xargs redis-cli DEL

みたいな方法は使えるかもしれないです(手元できちんと動かしてはいないですが)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
packages/backend Server side specific issue/PR
Projects
None yet
Development

No branches or pull requests