Project

General

Profile

環境対応 #626

UserStreamがgzipで転送されている時、JSONオブジェクトの途中でチャンクを切るように変更されたことに対する対応

Added by toshi_a 初音 over 5 years ago. Updated over 5 years ago.

Status:
終了
Priority:
通常
Target version:
Start date:
2013-11-22
Due date:
% Done:

0%

プラグイン名:

Description

最近、一部ユーザのUserStreamの接続が非常に不安定になっているらしい。バグではなくTwitterの仕様変更により特定のRubyのバージョン等で不具合が発生している可能性を疑っている

パッチ

解決策として以下のパッチが提案されている

cn: @toshi_a なんかうごいてるみたい(?) https://t.co/8wFiOs2ki2 [http://twitter.com/cn/status/403797586152136704]

環境について

Akkiesoft: @toshi_a ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13] [http://twitter.com/Akkiesoft/status/403803022901268481]
cn: @toshi_a RVM の 2.0.0p247 です [http://twitter.com/cn/status/403802920161783808]

付随する問題

よくわからん。関係無かったら別のチケットに分ける

Akkiesoft: http://t.co/Wn5W32eJMi 設定画面でチェックボックスいじった時のログ()--debug [http://twitter.com/Akkiesoft/status/403767513726476288]

Akkiesoft: http://t.co/QiSbi3fiyp こんなかんじ #mikutter [http://twitter.com/Akkiesoft/status/403778235638362112]

Associated revisions

Revision fc5d05b7 (diff)
Added by toshi_a 初音 over 5 years ago

streaming: 行の途中でデータが切れた場合、分断されたイベントオブジェクトが無視される refs #626

Revision 9db74d0e (diff)
Added by toshi_a 初音 over 5 years ago

streaming: gzipやdeflateでUserStreamに接続すると、十秒程度取得が遅れることがあるので、圧縮しない refs #626

History

#1

Updated by toshi_a 初音 over 5 years ago

  • Tracker changed from バグ to 環境対応
  • Subject changed from (検証)UserStreamがうまくいかない環境がある? to UserStreamがgzipで転送されている時、JSONオブジェクトの途中でチャンクを切るように変更されたことに対する対応
cn: @toshi_a @Akkiesoft Accept-Encoding: deflate;q=0.6,identity;q=0.3 みたいに gzip を消しても大丈夫みたいです。gzip だと 1 chunk 1 ツイートではなくでたらめに切られるように変わったみたいです… [http://twitter.com/cn/status/403807307252789248]
cn: @toshi_a さっきの Gist にファイル追加しました。標準の Accept-Encoding が "gzip;q=1.0,deflate;q=0.6,identity;q=0.3" だったので gzip 削りました https://t.co/8wFiOs2ki2 [http://twitter.com/cn/status/403809265673969664]

gzipで圧縮されている時に問題が起こっている可能性がある。パッチはgzipを無効にしたもの。ストリームのチャンクがJSONオブジェクトの途中で切れても動くようにできないかも検討する。

#2

Updated by toshi_a 初音 over 5 years ago

  • Status changed from 実装待ち to 様子見
  • Assignee set to toshi_a 初音

まず、JSONオブジェクトの途中で一度切れていても、文字列連結をしてから、\r\nでりなおすようにしました(fc5d05b7)。
次に、圧縮コネクションで、ある程度イベント数が溜まるか10秒ほど時間が経つまでサーバがプールしているような挙動が確認されたため、コネクションの圧縮をやめました(9db74d0e)。

これで修正されたように思いますが、1日程度様子を見ます。

#3

Updated by toshi_a 初音 over 5 years ago

この問題はJSONオブジェクトが不正な場所で切られている問題なので、チャンクが短すぎると報告されたような問題が起きるが、それが十分長い場合は、数イベントに1件だけ欠落する、というような現象になる。
また、特定数イベントが蓄積されなくても、検証したタイミングでは10秒経てばイベントが通知されていた。この場合は途中で分断されていないので、正しく流れている場合もあった。

#4

Updated by toshi_a 初音 over 5 years ago

  • Status changed from 様子見 to 終了

Also available in: Atom PDF