プロジェクト

全般

プロフィール

バグ #916

定期的にfollowアクティビティが大量に生成される

Osamu Koga10ヶ月前に追加. 5ヶ月前に更新.

ステータス:
進行中
優先度:
通常
担当者:
対象バージョン:
開始日:
2016-10-11
期日:
進捗率:

0%

プラグイン名:
followingcontrol
再現手順:

説明

詳細はよく分からないですが、15分に1回くらい、既に存在するフォロー / 被フォロー関係に対応するfollowアクティビティが大量に生成されます。


関連するチケット

関連している バグ #932: periodイベントが2回発火している レビュー待ち 2016-11-14
関連している 致命的 #964: フォロー・フォロワータブで何も表示されていない行をクリックすると落ちる 終了 2017-01-08
ブロック元 致命的 #995: CPU使用率が常に100%になり、メモリを大量に確保しつづけることがある 進行中 2017-03-16

関係しているリビジョン

リビジョン b61c9085 (差分)
toshi_a 初音5ヶ月前に追加

フォロイー・フォロワーが取得できたかどうかがわからないので、デバッグ出力を追加 refs #916

リビジョン bee6c2f5 (差分)
toshi_a 初音5ヶ月前に追加

Twitter: ユーザIDをユーザに変換する処理の効率化 refs #916

キャッシュ等から取得できなかったユーザだけをTwitter APIにリクエストす
るようにした。

リビジョン c2ce3ceb (差分)
toshi_a 初音5ヶ月前に追加

Gtk::UserListのアイコンのロードを、行が表示されるまで遅らせる refs #916

履歴

#1 Osamu Koga8ヶ月前に更新

  • プラグイン名followingcontrol にセット

このチケット自体と直接的な関係はなさそうですが、設定画面でパラメータをいじって試した所、followingcontrolのon_periodが倍速で発火しているっぽい事が分かりました(followingsの取得間隔を10分、followersを17分に設定したところ、それぞれ最短の間隔が5分と9分になった)。on_periodがおかしいのか、followingcontrol固有の問題なのかはまだ調べていません。

#2 Osamu Koga8ヶ月前に更新

  • 関連している バグ #932: periodイベントが2回発火している を追加

#3 toshi_a 初音5ヶ月前に更新

  • 関連している 致命的 #964: フォロー・フォロワータブで何も表示されていない行をクリックすると落ちる を追加

#4 toshi_a 初音5ヶ月前に更新

#964 の修正によって、メモリ上にUserが存在しないユーザはfollowingcontrolが無視してしまうということがわかりました。
メモリ上に確保された後、フォロー・フォロワーのクロールが行われると、Userインスタンスの取得に成功するので、新たにタイムラインに出現したユーザとのフォロー関係がその時に構築されたものであると誤検出するようです。

#5 toshi_a 初音5ヶ月前に更新

どうやら、フォロイー・フォロワーを取得する時に使っているDeferred.whenが、特定の条件下で引数のDeferredがすべて終了しても、次が実行されない問題があるらしい(Thread周り?)。

バグを直すことももちろんだが、ネットワークアクセスの処理などの場合、タイムアウトがあったほうが便利そうなので、前のジョブが一定期間経ったら失敗するようなDeferredユーティリティがほしいとも思った。

#6 toshi_a 初音5ヶ月前に更新

  • ステータス新規 から 進行中 に変更
  • 担当者toshi_a 初音 にセット

mikutter側のユーザを取得する処理にも問題がありました(bee6c2f5)。

本筋とは関係がありませんが、変更の規模が小規模なのと、流石に実用に耐えないレベルの影響だったため、以下の問題も修正しました。

しかし単に修正すると、プロフィールタブのフォロイー、フォロワーを開いた時、その数だけ画像のロードが始まります。
そのことによってmikutter 3.5では、以下の問題が発生しました。

  • 他の画像がロードされるのが遅くなる #934 (ce9d31ed) によって、同時にダウンロードする画像点数が4枚までとなったため、それが終わるまでほかの画像がロードされなくなります。
  • CPU使用率が長時間100%となる 以前もあったが、画像のロードが高速で終わる場合、画像ロード時の負荷が若干上がっているため長時間負荷が高い状態になる

そもそもフォロイー・フォロワーは表示されているぶんだけ画像を読み込めば良くて、ダウンロードのオーバーヘッドが気になるほど大量の画像をロードすることに問題があると考えて、行が表示された瞬間に、その行についてだけアイコンをダウンロードする変更 c2ce3ceb を適用しました。

#7 toshi_a 初音4ヶ月前に更新

  • ブロック元 致命的 #995: CPU使用率が常に100%になり、メモリを大量に確保しつづけることがある を追加

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