Project

General

Profile

Actions

バグ #916

closed

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

Added by Osamu Koga about 8 years ago. Updated almost 7 years ago.

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

Description

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


Files

api_shortcuts.rb.diff (2.47 KB) api_shortcuts.rb.diff Izumi Tsutsui, 2017-12-24 22:52
mikutter-916-test.png (129 KB) mikutter-916-test.png Izumi Tsutsui, 2018-03-03 11:06

Related issues

Related to バグ #932: periodイベントが2回発火している終了toshi_a 初音2016-11-14Actions
Related to 致命的 #964: フォロー・フォロワータブで何も表示されていない行をクリックすると落ちる終了Izumi Tsutsui2017-01-08

Actions
Blocked by 致命的 #995: CPU使用率が常に100%になり、メモリを大量に確保しつづけることがある終了toshi_a 初音2017-03-16

Actions
Actions #1

Updated by Osamu Koga about 8 years ago

  • プラグイン名 set to followingcontrol

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

Actions #2

Updated by Osamu Koga about 8 years ago

  • Related to バグ #932: periodイベントが2回発火している added
Actions #3

Updated by toshi_a 初音 almost 8 years ago

  • Related to 致命的 #964: フォロー・フォロワータブで何も表示されていない行をクリックすると落ちる added
Actions #4

Updated by toshi_a 初音 almost 8 years ago

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

Actions #5

Updated by toshi_a 初音 almost 8 years ago

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

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

Actions #6

Updated by toshi_a 初音 almost 8 years ago

  • Status changed from 新規 to 実装待ち
  • Assignee set to toshi_a 初音

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

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

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

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

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

Actions #7

Updated by toshi_a 初音 over 7 years ago

  • Blocked by 致命的 #995: CPU使用率が常に100%になり、メモリを大量に確保しつづけることがある added
Actions #8

Updated by Izumi Tsutsui almost 7 years ago

3.6.0 対応メモ

  • bee6c2f5 は mikutwitter が Twitter plugin 以下に移動したこと、 Retriever を使っていることから一部修正要
  • c2ce3ceb は develop にもそのままマージ可能

上記修正を 3.6.0-develop に当てると、このチケットの問題(フォロー通知が大量に流れる)は修正されているように見えます。

Actions #9

Updated by toshi_a 初音 almost 7 years ago

  • Status changed from 実装待ち to レビュー待ち
  • Assignee changed from toshi_a 初音 to Izumi Tsutsui
  • ブランチ set to topic/916-follow-notification-for-3.6

3.6.4にrebaseした新しいブランチを作って、3.6用の手直しを入れました。

それで試してみたところちゃんと動いているようなのですが、テスト用アカウントではフォロー・フォロワー数が少なく検証にならず、toshi_aは凍結されていてフォロー・フォロワーリストが取得できなかったため、そちらで確認してもらいたいです。

この問題は最近はつついさんのほうが見てくれていると思うので、つついさんにレビューお願いします。

(先日から若干運用を変えて、ステータスを「マージ待ち」か「まだダメ」に変えてもらうようにしています。)

Actions #10

Updated by Izumi Tsutsui almost 7 years ago

topic/916-follow-notification-for-3.6 を checkout してテストしました。
起動直後からフォロー・フォロワーとも表示されているので問題ないと思います。
ちょくちょく error になっているアイコンがありますが、これは twitter側の問題ですかね

Actions #11

Updated by Izumi Tsutsui almost 7 years ago

  • Assignee changed from Izumi Tsutsui to toshi_a 初音
Actions #12

Updated by toshi_a 初音 almost 7 years ago

  • Status changed from マージ待ち to 終了

master にmergeしました

Actions

Also available in: Atom PDF