オプションの HTTP 末尾ヘッダーを使用して、複数パートの Gremlin 応答を有効にする - Amazon Neptune

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

オプションの HTTP 末尾ヘッダーを使用して、複数パートの Gremlin 応答を有効にする

デフォルトでは、Gremlin クエリに対する HTTP 応答は、単一の JSON 結果セットで返されます。結果セットが非常に大きい場合、これにより DB インスタンスの OutOfMemoryError 例外が生じます。

ただし、チャンク化応答 (複数の別々のパートで返される応答) を有効にすることができます。これを行うには、転送エンコーディング (TE) トレーラーのヘッダー (te: trailers) をリクエストします。TE ヘッダーの詳細については、TE リクエストヘッダーに関する MDN ページ」を参照してください。

応答が複数のパートで返された場合、最初のパートが受信された後に発生する問題を診断するのは難しい場合があります。これは、最初のパートが 200 (OK)の HTTP ステータスコードで到着するためです。その後は、通常、メッセージ本文に破損した応答が含まれるというエラー状態となり、その最後に Neptune はエラーメッセージを追加します。

この種の障害の検出と診断を容易にするために、Neptune では各応答チャンクの末尾ヘッダー内に 2 つの新しいヘッダーフィールドも含まれます。

  • X-Neptune-Status— 応答コードの後ろに短い名前が続きます。たとえば、成功した場合、末尾ヘッダーは次のようになります。X-Neptune-Status: 200 OK。失敗の場合、応答コードは、X-Neptune-Status: 500 TimeLimitExceededException といった Neptune エンジンのエラーコードとなる可能性があります。

  • X-Neptune-Detail— 成功したリクエストでは空です。エラーの場合は、JSON エラーメッセージが含まれます。HTTP ヘッダー値には ASCII 文字しか使用できないため、JSON 文字列は URL 符号化されます。

注記

Neptune はチャンク化応答の gzip 圧縮は現在サポートしていません。クライアントがチャンクエンコーディングと圧縮の両方を同時に要求すると、Neptune は圧縮をスキップします。