Project

General

Profile

Actions

バグ #781

closed

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

Added by toshi_a 初音 almost 9 years ago. Updated over 8 years ago.

Status:
終了
Priority:
通常
Target version:
プラグイン名:
user_detail_view
ブランチ:
クラッシュする:

Description

内容

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

手順

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

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


Related issues

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

Updated by Osamu Koga over 8 years ago

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

Actions #2

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.scanno_mainthread に引っかかってこけました。というか、Usernew_ifnecessaryのたびにfindbyidを呼んでるのがなんかおかしい気がします。

Actions #3

Updated by toshi_a 初音 over 8 years ago

  • Status changed from レビュー待ち to 終了

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

Actions #4

Updated by toshi_a 初音 over 8 years ago

  • Related to バグ #830: User.new_ifnecessary がメインスレッド以外から呼ばれた時にクラッシュすることがある added
Actions

Also available in: Atom PDF