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

リストが途中から更新される #6864

Open
SanMurakami opened this issue Nov 27, 2020 · 38 comments
Open

リストが途中から更新される #6864

SanMurakami opened this issue Nov 27, 2020 · 38 comments
Labels
🐛Bug Unexpected behavior packages/frontend Client side specific issue/PR ❓needs more investigation A bug whose causes are unknown

Comments

@SanMurakami
Copy link
Contributor

SanMurakami commented Nov 27, 2020

💡 Summary

4trMT45yjS

🙂 Expected Behavior

☹️ Actual Behavior

📝 Steps to Reproduce

たまになるけど再現方法不明
複数デバイスでなる
1.
2.
3.

📌 Environment

Misskey.io v12.60.0
Windows10
Chrome 86.0.4240.198

@SanMurakami SanMurakami added the ⚠️bug? This might be a bug label Nov 27, 2020
@tamaina
Copy link
Contributor

tamaina commented Nov 27, 2020

私もこのバグに何度か遭遇してる
原因不明だけど

@syuilo
Copy link
Member

syuilo commented Nov 27, 2020

私は再現したことないな

@EbiseLutica EbiseLutica added the ❓needs more investigation A bug whose causes are unknown label Dec 2, 2020
@syuilo
Copy link
Member

syuilo commented Feb 27, 2021

vue3になったけどまだ発生する?

@tamaina
Copy link
Contributor

tamaina commented Feb 27, 2021

たまに見ますね @ firefox

@SanMurakami
Copy link
Contributor Author

たまになる

@syuilo
Copy link
Member

syuilo commented Mar 3, 2021

うーむ
私だけ6年間くらい使ってて一度も発生したことないのはなんなんだろう

@SanMurakami
Copy link
Contributor Author

個人的にはバックグラウンドから復帰したときに起きてることが多い気がするので、根本的にMisskeyとかVueの問題じゃない可能性がある

@syuilo
Copy link
Member

syuilo commented Apr 25, 2021

始めて私も再現した

@syuilo
Copy link
Member

syuilo commented Apr 25, 2021

a
ワカラン
新しくnoteが追加されるときは、noteの配列に unshift してるんだよね
でタイムラインはその配列の内容をレンダリングしているだけだから、どう考えても「要素が途中に追加される」のような奇妙な挙動になりそうにないんだけど

@syuilo
Copy link
Member

syuilo commented Apr 25, 2021

Vueのバグと思いたいが、(おそらく大幅に内部が書き換わっているであろう)Vue2~Vue3間でも発生していることを鑑みるとMisskeyの実装側に問題がある可能性もなくはない

@syuilo syuilo added 🐛Bug Unexpected behavior packages/frontend Client side specific issue/PR and removed ⚠️bug? This might be a bug labels Apr 27, 2021
@syuilo
Copy link
Member

syuilo commented Mar 27, 2022

iOSでも発生

@syuilo
Copy link
Member

syuilo commented Mar 27, 2022

懸賞金: ¥3000

@acid-chicken
Copy link
Member

新しくnoteが追加されるときは、noteの配列に unshift してるんだよね
でタイムラインはその配列の内容をレンダリングしているだけだから、どう考えても「要素が途中に追加される」のような奇妙な挙動になりそうにないんだけど

ランタイムは unshift を Proxy で検知してるに過ぎない(とはいえ単体で見れば well-tested だとは思う)し、他の条件が重なるとそういったことも起こるかも

@syuilo
Copy link
Member

syuilo commented Jun 26, 2022

まだ発生してるっぽい

@syuilo
Copy link
Member

syuilo commented Jan 1, 2023

懸賞金を¥5000に増額

@acid-chicken
Copy link
Member

acid-chicken commented Jan 1, 2023

まず発生しているときの __vue__ がないと原因の切り分けが厳しそう (これ Vue 3.x だとどうすればいいんだろう) document.getElementById("misskey_app").__vue_app__ から掘っていく感じか←これすごくだるそう

@syuilo
Copy link
Member

syuilo commented Jan 1, 2023

発声条件が不明、かつレアだから難しい

@acid-chicken
Copy link
Member

__VUE_PROD_DEVTOOLS__ つけた実験用インスタンスでお祈りするしかなさそう

@acid-chicken
Copy link
Member

あるいはまぁ Vue2.x 時代でも起こってたから遡って立てて実験するのはある程度楽かもだけど

@tamaina
Copy link
Contributor

tamaina commented Jan 1, 2023

__VUE_PROD_DEVTOOLS__ つけた実験用インスタンスでお祈りするしかなさそう

p1.a9z.devでdevtools見られるようにしたけどdate-separated-list魔改造してるからあんまり当てにならないかも

@syuilo
Copy link
Member

syuilo commented Jan 24, 2023

まだ発生することを確認

@futchitwo
Copy link
Contributor

今ioで起こってるんだけど、デバッグどこを覗いたらいいんだろう

@syuilo
Copy link
Member

syuilo commented Feb 19, 2023

production buildだとデバッグ難しそう

@tamaina
Copy link
Contributor

tamaina commented Mar 1, 2023

ioでまた発生した

@syuilo
Copy link
Member

syuilo commented Mar 1, 2023

発生しまくり

@acid-chicken
Copy link
Member

acid-chicken commented Mar 1, 2023

流速が増えると挿入回数が増えるから発生頻度も上がるとは思うけど流石に発生しまくりの説明はつかないという前提で推測すると、挿入を検知してトランジションしながら実 DOM に反映する数マイクロタスクの間に次のノート挿入が割り込んでる説がある

@syuilo
Copy link
Member

syuilo commented Mar 1, 2023

一応しゅいろさんの環境ではアニメーション無効にはしてる

@acid-chicken
Copy link
Member

じゃあ Vue ランタイムの配列プロキシでの変更発火から VDOM のコミットまでの間かな

@acid-chicken
Copy link
Member

タイムラインのストリーミングで同じ id の投稿が 2 度以上流れてくる可能性って完全に排除できるかな

@tamaina
Copy link
Contributor

tamaina commented Mar 1, 2023

WebSocketの再接続が行われ、再接続先のサーバーにおいてredisのストリームのメッセージが遅れて受信された場合、同じidの投稿を受け取る可能性はありそう

@wederuten6

This comment was marked as abuse.

@acid-chicken
Copy link
Member

acid-chicken commented Mar 1, 2023

WebSocketの再接続が行われ、再接続先のサーバーにおいてredisのストリームのメッセージが遅れて受信された場合、同じidの投稿を受け取る可能性はありそう

なら MkDateSeparatedListidkey の競合を発生させる余地がありそう

@syuilo
Copy link
Member

syuilo commented Mar 8, 2023

通知欄でも再現

@syuilo syuilo changed the title TLが途中から更新される リストが途中から更新される Mar 8, 2023
@acid-chicken
Copy link
Member

じゃあ MkDateSeparatedList のバグと断定して良さそう

@acid-chicken
Copy link
Member

image

@tamaina
Copy link
Contributor

tamaina commented May 19, 2023

これ結局なんで?

@acid-chicken
Copy link
Member

リストに重複したキーを突っ込んでいる(←確認済み)(推定→)が原因

@tamaina
Copy link
Contributor

tamaina commented Jul 29, 2023

#11066 でMapにしたけど改善したかしら

(ただ長時間起動すると、Mapが残ってしまうようでめっちゃGCが走ってる…)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐛Bug Unexpected behavior packages/frontend Client side specific issue/PR ❓needs more investigation A bug whose causes are unknown
Projects
Status: No status
Development

No branches or pull requests

7 participants