お世話になります。橋詰と申します。
現在、定期購入(Subscription)を実装したシステムのテストを行っています。
そこで遭遇した事象の展開とご質問をさせていただきたく思います。
有効期限が経過したユーザの継続状態をAPI
(Google Play Android Developer APIのgetメソッド)で
問い合わせるバッチ処理のテストを行っていたところ、以下の
ようなエラー応答(エラーコード:503、Backend Error)
が返却されることがありました。
====================================================
HTTP/1.1 503 Service Unavailable
Content-Type: application/json; charset=UT
Date: Thu, 20 Sep 2012 08:16:40 GMT
Expires: Thu, 20 Sep 2012 08:16:40 GMT
Cache-Control: private, max-age=0
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE
Transfer-Encoding: chunked
{
"error": {
"errors":
{
"domain": "global",
"reason": "backendError",
"message": "Backend Error"
}
],
"code": 503,
"message": "Backend Error"
}
}
====================================================
当初マルチスレッドで処理していたため、それが原因かと思い、
シングルスレッドで行ってみましたが、
(件数は減りましたが)同様のエラーが出ました。
エラーの頻度は、シングルスレッドで5,000件実施したところ
10~20件程度でした。
なお、テストでは1ユーザのデータに対して繰り返し問い合わせ
を行っています。
上記に対する修正として、シングルスレッドで処理し、
上記エラーが返却された場合、一定期間のスリープ後、規定回数まで
リトライを行うよう改修して実行したところ、
全件処理することができました。
(5,000件の処理で15件リトライが発生し、うち2件は
2回目のリトライで成功しました)
修正後の仕様で進めようかと考えていますが、上記事象に遭遇し、
他の回避方法をご存知の方がいらしたらご教示いただけますでしょうか。
また、基本的にエラーとなったデータはリトライを行いませんが、
他にリトライが推奨されるエラーをご存知でしたらご教示いただけると
幸いです。
どうぞよろしくお願いいたします。