bump `localstack` to `0.12.10` and set `use_multi_part_download` to `true`
MODIFY
tensorflow_io/core/plugins/s3/s3_filesystem.cc
tensorflow_io/core/plugins/s3/s3_filesystem.cc
@@ -520,17 +520,13 @@ uint64_t Length(const TF_ReadOnlyMemoryRegion* region) {
// SECTION 4. Implementation for `TF_Filesystem`, the actual filesystem
// ----------------------------------------------------------------------------
-// TODO: use_multi_part_download=true will cause an issue when read request
-// is asking for bytes larger than object size. In that case, a status code of
-// 416 is returned. However, 416 is not handled correctly and s3 thought this
-// is an error - should return OUT_OF_RANGE with less bytes.
namespace tf_s3_filesystem {
S3File::S3File()
: s3_client(nullptr),
executor(nullptr),
transfer_managers(),
multi_part_chunk_sizes(),
- use_multi_part_download(false), // TODO: change to true after fix
+ use_multi_part_download(true),
initialization_lock() {}
void Init(TF_Filesystem* filesystem, TF_Status* status) {
filesystem->plugin_filesystem = new S3File();

MODIFY
tests/test_aws/aws_test.sh
tests/test_aws/aws_test.sh
set -e
set -o pipefail
-LOCALSTACK_VERSION=0.12.2
+LOCALSTACK_VERSION=0.12.10
docker pull localstack/localstack:$LOCALSTACK_VERSION
docker run -d --rm --net=host --name=tensorflow-io-aws localstack/localstack:$LOCALSTACK_VERSION
echo "Waiting for 10 secs until localstack is up and running"

bump `localstack` to `0.12.10` and set `use_multi_part_download` to `true` (#1378)