付録I.1 リトライ処理の組み込み
リトライの条件
ネットワークやサーバへの一時的な負荷の集中や、ストレージシステムのリソースロックなどが原因で、REST APIの実行に失敗することがあります。このような場合、失敗したリクエストをリトライする処理を実装することで、処理を継続できる可能性があります。リトライで対処できるエラーかどうかは、HTTPステータスコード、およびエラーオブジェクトなどのレスポンスから判定できます。リトライで対処ができるエラーの条件を説明します。
次のどれかの場合にリトライすることができます。
- HTTPステータスコードに503(Service unavailable)が返る
- ジョブが失敗したときに、エラーオブジェクトのsolutionTypeにRETRYが返る
-
REST APIを長時間使用しているときに以下のレスポンスが返る(VSP E シリーズ、VSP G150、G350、G370、G700、G900、VSP F350、F370、F700、F900)
- HTTPステータスコードが500で、HTML形式のレスポンスボディが返る
この現象は、1分~2分ほど続きます。
-
セッションを破棄するAPI以外の実行時にHTTPステータスが200で、空のレスポンスボディが返る
この後、1.の現象が発生します。
この場合、HTTPステータスが500でHTML形式のレスポンスが返らなくなるまでAPIを再実行してください。
- HTTPステータスコードが500で、HTML形式のレスポンスボディが返る
- エラーオブジェクトに、特定のメッセージIDやストレージシステムのエラーコードが返る
リトライはエラーオブジェクトの内容で判定します。エラーオブジェクトは、次の方法で取得できます。
- APIリクエスト発行時のレスポンス
- ジョブの情報を取得するAPIのレスポンス
エラーオブジェクト
メッセージID
ストレージシステムのエラーコード
SSB1
SSB2
errorCode
APIリクエスト発行時のレスポンス
KART00003-E
KART00006-E
KART30003-E
KART30090-E
KART30095-E
KART30096-E
KART30097-E
KART40042-E
KART40049-E
KART40051-E
KART40052-E
-
-
-
ジョブの情報を取得するAPIのレスポンス
KART30000-E
2E11
2205
-
KART30008-E
KART30072-E
-
-
-
(凡例)
-:該当なし
- リソースグループをロックするAPIの場合に、エラーオブジェクトに特定のメッセージIDやエラーコードが返る
リソースグループをロックするAPIのリトライ条件を次に示します。
エラーオブジェクト
メッセージID
ストレージシステムのエラーコード
SSB1
SSB2
errorCode
APIリクエスト発行時のレスポンス
-
-
-
-
ジョブの情報を取得するAPIのレスポンス
KART40050-E
KART40052-E
-
-
-
KART30000-E
-
-
EX_EACCES
(凡例)
-:該当なし
クライアントプログラムの検証
本番環境に近いシステム構成でクライアントプログラムの検証をします。
次の観点で検証してください。
- リトライ条件を組み込んだクライアントプログラムが動作するか。
- クライアントプログラムが期待している実行時間内に完了するか。
検証結果が期待通りではなかった場合、下記の観点でプログラムを見直してください。
- クライアントのAPIのリトライ回数、および、リトライ時間を調整してください。
- APIの同時実行数を減らして、クライアントのAPIのリトライ頻度を低減してください。
VSP E シリーズ、VSP G150、G350、G370、G700、G900、VSP F350、F370、F700、F900の場合、次に示すAPIは同時実行数の上限に注意する必要があります。上限数の目安を参考にしてください。
同時実行数に制限のあるAPI
同時に実行できるリクエストの上限数
リソースグループの一覧を取得するAPI
2
ボリュームの情報を取得するAPI(取得するボリュームの数:2,049以上)
2
ポートの情報を取得するAPI(SVPと連携しない構成で、クエリにdetailInfoType=loginsを指定して実行する場合)
2(ポート数:8)
1(ポート数:40)
ホストグループまたはiSCSI ターゲットの情報を取得するAPI(クエリパラメータにportIdを指定しないで実行する場合)
13(ポート数:32)
6(ポート数:80)
global-active deviceペアの情報を取得するAPI
2
仮想LDEV の情報を取得するAPI(取得する仮想LDEV数:2,049以上)
2
- メモ
-
VSP E シリーズ、VSP G150、G350、G370、G700、G900、VSP F350、F370、F700、F900でSVP と連携しない構成の場合、ストレージシステムの構成情報を更新するために、Platform REST API サーバ上でリクエストが実行されます。その間、同時実行数に制限のあるAPI の実行に影響が出るおそれがあります。