From 3ca7fca48a07ac634fddac472362ffe0f280a96d Mon Sep 17 00:00:00 2001 From: alexey-milovidov Date: Sat, 3 Oct 2020 03:42:33 +0300 Subject: [PATCH] Update DiskS3.cpp --- src/Disks/S3/DiskS3.cpp | 49 +++++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/src/Disks/S3/DiskS3.cpp b/src/Disks/S3/DiskS3.cpp index fc4ff60d69d..13721da629a 100644 --- a/src/Disks/S3/DiskS3.cpp +++ b/src/Disks/S3/DiskS3.cpp @@ -36,32 +36,33 @@ namespace ErrorCodes extern const int NOT_IMPLEMENTED; } -class DiskS3::AwsS3KeyKeeper : public std::list> -{ -public: - void addKey(const String & key); - -private: - /// limit for one DeleteObject request - /// see https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html - const static size_t chunk_limit = 1000; -}; - -void DiskS3::AwsS3KeyKeeper::addKey(const String & key) -{ - if (empty() || back().size() >= chunk_limit) - { /// add one more chunk - push_back(value_type()); - back().reserve(chunk_limit); - } - - Aws::S3::Model::ObjectIdentifier obj; - obj.SetKey(key); - back().push_back(obj); -} - namespace { + /// Helper class to collect keys into chunks of maximum size (to prepare batch requests to AWS API) + class DiskS3::AwsS3KeyKeeper : public std::list> + { + public: + void addKey(const String & key); + + private: + /// limit for one DeleteObject request + /// see https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html + const static size_t chunk_limit = 1000; + }; + + void DiskS3::AwsS3KeyKeeper::addKey(const String & key) + { + if (empty() || back().size() >= chunk_limit) + { /// add one more chunk + push_back(value_type()); + back().reserve(chunk_limit); + } + + Aws::S3::Model::ObjectIdentifier obj; + obj.SetKey(key); + back().push_back(obj); + } + String getRandomName() { std::uniform_int_distribution distribution('a', 'z');