diff options
author | galaxycrab <UgnineSirdis@ydb.tech> | 2023-01-18 10:58:22 +0300 |
---|---|---|
committer | galaxycrab <UgnineSirdis@ydb.tech> | 2023-01-18 10:58:22 +0300 |
commit | aa68184d84e44486e8a84092c48554f68ed1fc8a (patch) | |
tree | 233f9e3758aa324850f54945da389939418d595e | |
parent | c8ec4475fce90f4e19f89424d4256ce641281f1c (diff) | |
download | ydb-aa68184d84e44486e8a84092c48554f68ed1fc8a.tar.gz |
Fix double commit of S3 multipart upload
-rw-r--r-- | ydb/library/yql/providers/s3/actors/yql_s3_write_actor.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/ydb/library/yql/providers/s3/actors/yql_s3_write_actor.cpp b/ydb/library/yql/providers/s3/actors/yql_s3_write_actor.cpp index ec59045d641..3bc4bf46b78 100644 --- a/ydb/library/yql/providers/s3/actors/yql_s3_write_actor.cpp +++ b/ydb/library/yql/providers/s3/actors/yql_s3_write_actor.cpp @@ -144,7 +144,7 @@ public: void Bootstrap(const TActorId& parentId) { ParentId = parentId; - LOG_D("TS3FileWriteActor", __func__ << " by " << ParentId << " for Key: [" << Key << "], Url: [" << Url << "], request id: [" << RequestId << "]"); + LOG_D("TS3FileWriteActor", "Bootstrap by " << ParentId << " for Key: [" << Key << "], Url: [" << Url << "], request id: [" << RequestId << "]"); if (Parts->IsSealed() && Parts->Size() <= 1) { Become(&TS3FileWriteActor::SinglepartWorkingStateFunc); const size_t size = Max<size_t>(Parts->Volume(), 1); @@ -186,6 +186,9 @@ public: } void Finish() { + if (IsFinishing()) + return; + Parts->Seal(); if (!UploadId.empty()) { @@ -425,7 +428,7 @@ public: } void Bootstrap() { - LOG_D("TS3WriteActor", __func__); + LOG_D("TS3WriteActor", "Bootstrap"); Become(&TS3WriteActor::StateFunc); } @@ -492,7 +495,12 @@ private: } if (finished) { - std::for_each(FileWriteActors.cbegin(), FileWriteActors.cend(), [](const std::pair<const TString, std::vector<TS3FileWriteActor*>>& item){ item.second.back()->Finish(); }); + std::for_each( + FileWriteActors.cbegin(), + FileWriteActors.cend(), + [](const std::pair<const TString, std::vector<TS3FileWriteActor*>>& item) { + item.second.back()->Finish(); + }); Finished = true; FinishIfNeeded(); } |