プロジェクト

全般

プロフィール

バグ #781

完了

Userのインスタンスが生成されていないユーザのプロフィールを開けない

toshi_a 初音 さんが8年以上前に追加. ほぼ8年前に更新.

ステータス:
終了
優先度:
通常
担当者:
対象バージョン:
プラグイン名:
user_detail_view
ブランチ:
クラッシュする:

説明

内容

Userインスタンスがキャッシュされていないユーザのプロフィールが開けない。そのユーザのツイートを一つでも受信する、フォローしている・されているなどすると確実に存在してしまうので、再現は困難。

手順

  1. 検索、リスト、プロフィールなどを使って、in_reply_to_status_idがついていないMentionを探す
  2. screen_nameをクリックする。期待される動作としてはプラグインタブが開くが、開かない

報告されている再現方法
https://twitter.com/EbiflyBB/status/648100898623762432


関連するチケット

関連している バグ #830: User.new_ifnecessary がメインスレッド以外から呼ばれた時にクラッシュすることがある終了toshi_a 初音2016-05-08操作

Osamu Koga さんが8年以上前に更新

mikutter_shell_post https://github.com/penguin2716/mikutter_shell_post の@whois機能を使うと簡単に再現できそうですね(というかたまに@whoisで開けないことがある)。

Osamu Koga さんがほぼ8年前に更新

  • ステータス新規 から レビュー待ち に変更
  • 対象バージョン3.2 から 3.3 に変更
  • プラグイン名profile から user_detail_view に変更

なんか盛大にバグっていたので直しました。

ところで、本来は UserServiceRetriever#selectby をidnameでも動くようにオーバーライドしていやるのが正しい気がしますが、それをやると Service#user_initialize のとこで post.scanno_mainthread に引っかかってこけました。というか、Usernew_ifnecessaryのたびにfindbyidを呼んでるのがなんかおかしい気がします。

toshi_a 初音 さんがほぼ8年前に更新

  • ステータスレビュー待ち から 終了 に変更

こちらでも確認したので、developに放り込んでおきました。
Retriever#new_ifnecessary は、全てのRetriever::Modelに問い合わせて見つからなかった場合は、新しいインスタンスを作るメソッドで、Retriever上のメモリキャッシュから読み出していますが、Userがオーバライドしている方ではそうなっていませんね。この変更が行われた 5b2463b30a26ae7050001b058e8a1cb1021a1311 を見てもこの振る舞いは正しいと思えませんでしたが、MessageではオーバライドしていないのにUserでだけオーバライドしているのには何らかの意図がある可能性もあるので、調査してみます。

toshi_a 初音 さんがほぼ8年前に更新

  • 関連している バグ #830: User.new_ifnecessary がメインスレッド以外から呼ばれた時にクラッシュすることがある を追加

他の形式にエクスポート: Atom PDF