OCAPI フックのサーキットブレーカー 23.1

フックのサーキットブレーカー機能は、フックのエラー率が上がったときにシステムを保護するので、安定性が高まり、処理時間が短縮されます。各フックタイプへの呼び出しは個別に追跡されます。

各拡張ポイントタイプには独自のフックのサーキットブレーカーのインスタンスがあり、そのフックの実行エラー率が追跡されます。サーキットブレーカーのステータスは、closed、open、half-open の 3 つのうちのいずれかです。通常は、closed です。いずれの時点においても、直近の 100 件のフック呼び出しに 50 件以上のエラーが発生した場合、次の処理がトリガーされます。

  1. サーキットブレーカーのステータスが open に変わります。この変更がログに記録されます。
  2. 60 秒間、エラーの発生している拡張ポイントの呼び出しから、HTTP ステータスコード 503 (Service Unavailable) が、フォールトタイプ HookCircuitBreakerException とともに返されます。
  3. 60 秒が経過すると、サーキットブレーカーのステータスが half-open に変わります。この変更がログに記録されます。
  4. サーキットブレーカーは、エラーが発生している拡張ポイントへの次の 10 件の呼び出しを追跡します。5 件を超える呼び出しが失敗した場合は、ステップ 1 に戻ります。
  5. サーキットブレーカーのステータスが closed に変わり、フックへの呼び出しの追跡が再開されます。この変更がログに記録されます。

フック呼び出しが 503 (Service Unavailable) エラーを返した場合は、Log Center を使用して原因を調査します。

  1. Business Manager で、管理 > サイトの開発 > 開発セットアップの順に移動します。
  2. 「ログファイル」セクションで、Log Center をクリックします。
  3. 「Day of Year (年間通算日)」を選択します。
  4. LCQL フィールドに「HookCircuitBreaker」と入力します。
  5. クエリのヒットで、HookInvocationException エントリを見つけ、そのエントリの Stack Trace UUID (スタックトレース UUID) リンクをクリックします。
  6. スタックトレースで、Caused by (原因) セクションを見つけます。フックエラーの原因に関する情報が含まれている可能性があります。以下のような原因が考えられます。
    • フックにリモート呼び出しが含まれているが応答がないため、フックがタイムアウトになる。この場合、代わりに非同期 OCAPI 呼び出しを試してください。
    • フックスクリプトにエラーがある。コードを修正し、エラー処理の対策を追加することを考慮してください。

拡張ポイントとサポートされているリソースについての詳細は、Data API 23.1 の OCAPI フックShop API 23.1 の OCAPI フックを参照してください。