StorageGRID - S3 Selectクエリ実行中のクライアント側タイムアウト
環境
- StorageGRID 11.8および11.9
- Amazon Web Services(AWS)SDK for Java v1
- S3 Select API
問題
- 大規模なcsvオブジェクトに対するS3 Selectクエリがクライアント側でタイムアウトし、特に数百万行または大きなファイルサイズ(例:5GB、1400万行)のオブジェクトの場合、エラー500が発生します。
- この問題は、AWS SDK for Java v1を使用している場合に発生します。
- クライアントアプリケーションがタイムアウトに達し、クエリが完了してGRIDからの応答が返される前に切断されます。
ストレージノード上のbycast-err.logを調べると、次のエラーが判明しました:
Oct 28 15:51:45 nodename ADE: |12470336 1213087561 S3RQ PSHD 2025-10-28T15:51:45.519425| ERROR 1828 73b605873a4948b1 S3RQ: S3 request error (after response): connection=connection_id, Resource=/bucket/object_name.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=<somecredential>%2F20251028%2Fus-east-1%2Fs3%2Faws4_requestX-Amz-Expires=10800x-ntap-bypass-host-check=1&X-Amz-Signature=<somesignature>, HTTP Method=GET, HTTP Status Code (not sent)=500, ErrorMsg=InternalError, ErrorType=Internal, CustomErrorMessage={<none>}, Details={asyncPush error: no consumer}aws cli v1を使用した際のエラーメッセージの例:
aws s3api select-object-content --bucket demo --key object_name.csv --endpoint http://enpoint.url:port --expression "SELECT * FROM S3Object WHERE product = 'someproduct'" --expression-type SQL --input-serialization '{"CSV": {"FileHeaderInfo": "USE"}}' --output-serialization '{"CSV": {}}' output.csv --no-verify-sslRead timeout on endpoint URL: "http://endpoint.url:port/bucket/object_name.csv?select&select-type=2"podmanのログでは、'
NOTICE - Parsing query'と'INFO - Starting HTTP response with code 200'の間のギャップが60秒以上であることに注意してください(デフォルトのaws cliクライアント側タイムアウト)。podman -r logs <container_id>[2025-10-28T15:49:51] [/build/src/libs/sql_processing/Parser.cc:141] NOTICE - Parsing query 'SELECT * FROM S3Object WHERE product = 'someproduct''[...][2025-10-28T15:51:45] [/build/src/libs/output_stream/OutputStream.cc:222] INFO - Starting HTTP response with code 200