プロジェクト

全般

プロフィール

環境対応 #626

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

toshi_a 初音ほぼ4年前に追加. ほぼ4年前に更新.

ステータス:
終了
優先度:
通常
担当者:
対象バージョン:
開始日:
2013-11-22
期日:
進捗率:

0%

プラグイン名:

説明

最近、一部ユーザの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]

関係しているリビジョン

リビジョン fc5d05b7 (差分)
toshi_a 初音ほぼ4年前に追加

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

リビジョン fc5d05b7 (差分)
toshi_a 初音ほぼ4年前に追加

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

リビジョン 9db74d0e (差分)
toshi_a 初音ほぼ4年前に追加

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

リビジョン 9db74d0e (差分)
toshi_a 初音ほぼ4年前に追加

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

履歴

#1 toshi_a 初音ほぼ4年前に更新

  • トラッカーバグ から 環境対応 に変更
  • 題名(検証)UserStreamがうまくいかない環境がある? から 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 toshi_a 初音ほぼ4年前に更新

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

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

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

#3 toshi_a 初音ほぼ4年前に更新

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

#4 toshi_a 初音ほぼ4年前に更新

  • ステータス様子見 から 終了 に変更

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