オプションのHTTP末尾ヘッダーを使用してマルチパート Gremlin レスポンスを有効にする - Amazon Neptune

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

オプションのHTTP末尾ヘッダーを使用してマルチパート Gremlin レスポンスを有効にする

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

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

レスポンスが複数のパートで返されると、最初のパートがHTTPステータスコード 200 (OK) で到着するため、最初のパートを受信した後に発生する問題を診断するのが難しい場合があります。その後は、通常、メッセージ本文に破損した応答が含まれるというエラー状態となり、その最後に 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 は圧縮をスキップします。