バグ #781
closedUserのインスタンスが生成されていないユーザのプロフィールを開けない
Description
内容¶
Userインスタンスがキャッシュされていないユーザのプロフィールが開けない。そのユーザのツイートを一つでも受信する、フォローしている・されているなどすると確実に存在してしまうので、再現は困難。
手順¶
- 検索、リスト、プロフィールなどを使って、in_reply_to_status_idがついていないMentionを探す
- screen_nameをクリックする。期待される動作としてはプラグインタブが開くが、開かない
報告されている再現方法
https://twitter.com/EbiflyBB/status/648100898623762432
Related issues
Updated by Osamu Koga over 8 years ago
mikutter_shell_post https://github.com/penguin2716/mikutter_shell_post の@whois機能を使うと簡単に再現できそうですね(というかたまに@whoisで開けないことがある)。
Updated by Osamu Koga over 8 years ago
- Status changed from 新規 to レビュー待ち
- Target version changed from 3.2 to 3.3
- プラグイン名 changed from profile to user_detail_view
なんか盛大にバグっていたので直しました。
ところで、本来は UserServiceRetriever#selectby
をidnameでも動くようにオーバーライドしていやるのが正しい気がしますが、それをやると Service#user_initialize
のとこで post.scan
が no_mainthread
に引っかかってこけました。というか、User
がnew_ifnecessary
のたびにfindbyid
を呼んでるのがなんかおかしい気がします。
Updated by toshi_a 初音 over 8 years ago
- Status changed from レビュー待ち to 終了
こちらでも確認したので、developに放り込んでおきました。
Retriever#new_ifnecessary は、全てのRetriever::Modelに問い合わせて見つからなかった場合は、新しいインスタンスを作るメソッドで、Retriever上のメモリキャッシュから読み出していますが、Userがオーバライドしている方ではそうなっていませんね。この変更が行われた 5b2463b30a26ae7050001b058e8a1cb1021a1311 を見てもこの振る舞いは正しいと思えませんでしたが、MessageではオーバライドしていないのにUserでだけオーバライドしているのには何らかの意図がある可能性もあるので、調査してみます。
Updated by toshi_a 初音 over 8 years ago
- Related to バグ #830: User.new_ifnecessary がメインスレッド以外から呼ばれた時にクラッシュすることがある added