Broken pipe exception

1,237 views
Skip to first unread message

ulzii nomingerel

unread,
Feb 27, 2012, 3:39:37 AM2/27/12
to twitt...@googlegroups.com
こんにちは。

twitter4jのImageUploadクラスのupload(”filename")機能を利用して
TWITPICへ画像をアップロードす るアプリを作っていますが、
頻度的に以下の例外が起きています。
Write error: ssl=0x497fe0: I/O error during system call, Broken pipe

どう言う風に対応するものか教えて頂きないでしょうか。
お返事お待ちしております。

以上、宜しくお願い致します。

withgod

unread,
Feb 28, 2012, 3:25:48 AM2/28/12
to twitt...@googlegroups.com
こんにちは、withgodです。

私には見慣れないエラーですが、androidで3g環境だったりしますか?
前記の環境で接続が切れてるだけの場合、再投稿するしかないと思います(再投稿ロジックを入れるとか)

お使いの次の情報を教えて下さい
・twitter4j
・OS
 ・通信環境
・Java(開発環境、同一で無い場合は実行環境も)
・StackTraceが出てるなら部分的なコピペではなく一式

以上。

2012年2月27日月曜日17時39分37秒 UTC+9 ulzii nomingerel:

ulzii nomingerel

unread,
Feb 28, 2012, 5:40:10 AM2/28/12
to twitt...@googlegroups.com
withgodさん

こんにちは。お返事有難うございます。

このエラーは複数の画像をfor文で繰り返してアップロードする時に起きます。
再現するタイミングは動かすたび微妙に異なります。
(※例えば:5枚の画像の2枚ぐらいアップロード出来るが、他は出来なかったりする。)

・twitter4j: twitter4j-media-support-2.2.0.jar
・OS:Android2.2
 ・通信環境:とは? SmartphoneでWifiネットワークを利用しています。
・Java(開発環境、同一で無い場合は実行環境も):eclipse 3.6.2, JDK 1.6
・StackTraceが出てるなら部分的なコピペではなく一式: 残念ながら、一式は出さない状態ですが、以下の情報を出ているの送 ります。
---------------------------------------------------
Caused by javax.net.ssl.SSLException: Write error: ssl=0x4ff888: I/O error during system call, Broken pipe

Write error: ssl=0x4ff888: I/O error during system call, Broken pipeRelevant discussions can be on the Internet at:
    http://www.google.co.jp/search?q=ea09dc6d or
    http://www.google.co.jp/search?q=050d9b43
TwitterException{exceptionCode=[ea09dc6d-050d9b43 0237e8c8-9ca5c8e4], statusCode=-1, retryAfter=0, rateLimitStatus=null, version=2.2.0}
---------------------------------------------------

宜しくお願い致します。
--
Twitter4J の最新情報をフォロー: http://twitter.com/t4j_news
現在のバージョン - 安定: 2.2.5, 開発中: 2.2.6-SNAPSHOT
http://twitter4j.org/jira/secure/IssueNavigator.jspa?requestId=10030
バグトラッキング: http://twitter4j.org/jira/browse/TFJ
 
このメールは次の Google グループの参加者に送られています: Twitter4J J
このグループにメールで投稿: twitt...@googlegroups.com
このグループから退会する: http://groups.google.com/group/twitter4j-j?hl=ja

ulzii nomingerel

unread,
Feb 28, 2012, 5:46:49 AM2/28/12
to twitt...@googlegroups.com
withgodさん

twitter4j の中のどこにエラー起きているかを分るような情報をとれたので送ります。
-----------------------------------------
twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:204)
twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:65)
twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:114)
twitter4j.media.AbstractImageUploadImpl.upload(AbstractImageUploadImpl.java:114)
twitter4j.media.AbstractImageUploadImpl.upload(AbstractImageUploadImpl.java:88)
-----------------------------------------


ご協力よろしくお願い致します。


-------- Original Message --------
Subject: Re: [Twitter4J] Re: Broken pipe exception
Date: Tue, 28 Feb 2012 19:40:10 +0900
From: ulzii nomingerel <nomin...@udom.co.jp>
Reply-To: twitt...@googlegroups.com
To: twitt...@googlegroups.com

withgod

unread,
Feb 28, 2012, 11:15:44 PM2/28/12
to twitt...@googlegroups.com
こんにちは、withgodです。

取りあえず最初に

・理由が無ければ twitter4j は最新を使って下さい。
 ・特に問題が起きてる場合、最新のバージョンだと修正されている可能性が高いです

StackTraceを見た感じだとt4jのエラーというよりも、通信環境やOS等の問題のように見えます。
t4jをandroid上で動かす経験が乏しいため、これ以上力になれなそうです。

ところで、提示して頂いた情報の中にある
で出てくる、
で解決しませんか?

2012年2月28日火曜日19時46分49秒 UTC+9 ulzii nomingerel:

Mocel

unread,
Mar 2, 2012, 11:44:57 PM3/2/12
to twitt...@googlegroups.com
こんにちは。

スタックトレースのごく一部しかないので状況が把握しづらいですが、Android 2.2 以前の環境をお使いでしたら HTTPS? 通信を実行する前に次のようなコードでシステムプロパティに「HTTP キープアライブを向こうする」よう設定してみてください。

System.setProperty("http.keepAlive", "false");
System.setProperty("https.keepAlive", "false");

もしこれで改善されたのでしたら、Twitter4J ではなく Android の HttpURLConnection クラスにあるバグ(キープアライブ時に getInputStream().close() を実行すると再リクエストが失敗する)が原因ということになります。


-Mocel

2012年2月28日火曜日19時46分49秒 UTC+9 ulzii nomingerel:
2012年2月28日火曜日19時46分49秒 UTC+9 ulzii nomingerel:

ulzii nomingerel

unread,
Mar 4, 2012, 9:26:21 PM3/4/12
to twitt...@googlegroups.com
Mocelさん、withgodさん

こんにちは。
お返事有難うございます。
どうも下記の2行を追加しても結果が同じです。
>System.setProperty("http.keepAlive", "false");

>System.setProperty("https.keepAlive", "false");

気付いたら、以下のロジックでアップロードされています。
1番目:アップロード成功
2番目:アップロード失敗
3番目:アップロード成功
4番目:アップロード失敗....

追加した場所が悪かったりしないかな~?

以下のようにコーディグしました。
            File file = new File("");
            MediaProvider media_provider= MediaProvider.TWITPIC;
            Properties props = new Properties();
            props.put(PropertyConfiguration.MEDIA_PROVIDER, media_provider);
            props.put(PropertyConfiguration.MEDIA_PROVIDER_API_KEY, "");
            props.put(PropertyConfiguration.OAUTH_ACCESS_TOKEN, "");
            props.put(PropertyConfiguration.OAUTH_ACCESS_TOKEN_SECRET, "");
            props.put(PropertyConfiguration.OAUTH_CONSUMER_KEY, "");
            props.put(PropertyConfiguration.OAUTH_CONSUMER_SECRET, "");
            Configuration config= new PropertyConfiguration(props);

            System.setProperty("http.keepAlive", "false");
            System.setProperty("https.keepAlive", "false");
            //twitter4jの画像アップロード機能を使用
            ImageUpload upload = new ImageUploadFactory(config).getInstance(media_provider);
            String urlOfImg = upload.upload(file);

何かダメなコーディングないでしょうか。
・StackTraceが出てるなら部分的なコピペではなく一式: 残念ながら、一式は出さない状態ですが、以 下の情報を出ているの送 ります。

2012年2月28日火曜日19時46分49秒 UTC+9 ulzii nomingerel:
・StackTraceが出てるなら部分的なコピペではなく一式: 残念ながら、一式は出さない状態ですが、以 下の情報を出ているの送 ります。

Mocel

unread,
Mar 5, 2012, 8:31:20 AM3/5/12
to twitt...@googlegroups.com
> System.setProperty("http.keepAlive", "false");
> System.setProperty("https.keepAlive", "false");

この行は画像をアップロードする前ではなく、そのプログラムで最初に HTTP / HTTPS 通信をする前に 1 回だけ実行させてください。
Android でしたら最初に表示される Activity の Static Initializer 内で実行するのが確実です。

-Mocel

ulzii nomingerel

unread,
Mar 6, 2012, 1:11:17 AM3/6/12
to twitt...@googlegroups.com
Mocelさん

本当に有難うございました。
static initializerの中に設定してあげるどこで解決しました。

助かりました。
・StackTraceが出てるなら部分的なコピペではなく一式: 残念ながら、一式は出さない状 態ですが、以 下の情報を出ているの送 ります。

---------------------------------------------------
Caused by javax.net.ssl.SSLException: Write error: ssl=0x4ff888: I/O error during system call, Broken pipe

Write error: ssl=0x4ff888: I/O error during system call, Broken pipeRelevant discussions can be on the Internet at:
    http://www.google.co.jp/search?q=ea09dc6d or
    http://www.google.co.jp/search?q=050d9b43
TwitterException{exceptionCode=[ea09dc6d-050d9b43 0237e8c8-9ca5c8e4], statusCode=-1, retryAfter=0, rateLimitStatus=null, version=2.2.0}
---------------------------------------------------

宜しくお願い致します。

(2012/02/28 17:25), withgod wrote:
こんにちは、withgodです。

私には見慣れないエラーですが、androidで3g環境だったりしますか?
前記の環境で接続が切れてるだけの場合、再投稿するしかないと思います(再投稿ロジックを入れ るとか)

お使いの次の情報を教えて下さい
・twitter4j
・OS
 ・通信環境
・Java(開発環境、同一で無い場合は実行環境も)
・StackTraceが出てるなら部分的なコピペではなく一式

以上。

2012年2月27日月曜日17時39分37秒 UTC+9 ulzii nomingerel:
こんにちは。

twitter4jのImageUploadクラスのupload(”filename") 機能を利用 して

どう言う風に対応するものか教えて頂きないでしょうか。
お返事お待ちしております。

以上、宜しくお願い致します。


2012年2月28日火曜日19時46分49秒 UTC+9 ulzii nomingerel:
・StackTraceが出てるなら部分的なコピペではなく一式: 残念ながら、一式は出さない状 態ですが、以 下の情報を出ているの送 ります。

---------------------------------------------------
Caused by javax.net.ssl.SSLException: Write error: ssl=0x4ff888: I/O error during system call, Broken pipe

Write error: ssl=0x4ff888: I/O error during system call, Broken pipeRelevant discussions can be on the Internet at:
    http://www.google.co.jp/search?q=ea09dc6d or
    http://www.google.co.jp/search?q=050d9b43
TwitterException{exceptionCode=[ea09dc6d-050d9b43 0237e8c8-9ca5c8e4], statusCode=-1, retryAfter=0, rateLimitStatus=null, version=2.2.0}
---------------------------------------------------

宜しくお願い致します。

(2012/02/28 17:25), withgod wrote:
こんにちは、withgodです。

私には見慣れないエラーですが、androidで3g環境だったりしますか?
前記の環境で接続が切れてるだけの場合、再投稿するしかないと思います(再投稿ロジックを入れ るとか)

お使いの次の情報を教えて下さい
・twitter4j
・OS
 ・通信環境
・Java(開発環境、同一で無い場合は実行環境も)
・StackTraceが出てるなら部分的なコピペではなく一式

以上。

2012年2月27日月曜日17時39分37秒 UTC+9 ulzii nomingerel:
こんにちは。

twitter4jのImageUploadクラスのupload(”filename") 機能を利用 して

どう言う風に対応するものか教えて頂きないでしょうか。
お返事お待ちしております。

以上、宜しくお願い致します。

--
Reply all
Reply to author
Forward
0 new messages