diff options
author | Oleg Doronin <dorooleg@yandex.ru> | 2024-07-18 12:37:47 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-18 13:37:47 +0300 |
commit | 302e20479e4fbcf9d57bd40b1cb330e84eab86f7 (patch) | |
tree | 4113dffaeed53631ac948318de05c3f4069a9902 | |
parent | b87f203cb2ff98907075602ab0e7fcbd2729c8ae (diff) | |
download | ydb-302e20479e4fbcf9d57bd40b1cb330e84eab86f7.tar.gz |
DqPqReadActorTest has been fixed (#6785)
-rw-r--r-- | ydb/library/yql/providers/common/ut_helpers/dq_fake_ca.cpp | 12 | ||||
-rw-r--r-- | ydb/library/yql/providers/common/ut_helpers/dq_fake_ca.h | 2 |
2 files changed, 10 insertions, 4 deletions
diff --git a/ydb/library/yql/providers/common/ut_helpers/dq_fake_ca.cpp b/ydb/library/yql/providers/common/ut_helpers/dq_fake_ca.cpp index 8356bfd4df..17430bc285 100644 --- a/ydb/library/yql/providers/common/ut_helpers/dq_fake_ca.cpp +++ b/ydb/library/yql/providers/common/ut_helpers/dq_fake_ca.cpp @@ -55,7 +55,7 @@ void TFakeActor::InitAsyncInput(IDqComputeActorAsyncInput* dqAsyncInput, IActor* DqAsyncInputAsActor = dqAsyncInputAsActor; } -void TFakeActor::Terminate() { +void TFakeActor::Terminate(std::shared_ptr<std::atomic<bool>> done) { if (DqAsyncInputActorId) { DqAsyncInput->PassAway(); @@ -71,6 +71,7 @@ void TFakeActor::Terminate() { DqAsyncOutput = nullptr; DqAsyncOutputAsActor = nullptr; } + done->store(true); } TFakeActor::TAsyncOutputCallbacks& TFakeActor::GetAsyncOutputCallbacks() { @@ -101,9 +102,14 @@ TFakeCASetup::TFakeCASetup() } TFakeCASetup::~TFakeCASetup() { - Execute([](TFakeActor& actor) { - actor.Terminate(); + auto shouldStop = std::make_shared<std::atomic<bool>>(); + Execute([shouldStop](TFakeActor& actor) { + actor.Terminate(shouldStop); }); + + while (!*shouldStop) { + Sleep(TDuration::MilliSeconds(200)); + } } void TFakeCASetup::AsyncOutputWrite(const TWriteValueProducer valueProducer, TMaybe<NDqProto::TCheckpoint> checkpoint, bool finish) { diff --git a/ydb/library/yql/providers/common/ut_helpers/dq_fake_ca.h b/ydb/library/yql/providers/common/ut_helpers/dq_fake_ca.h index 8d50cff70b..c74c9bb201 100644 --- a/ydb/library/yql/providers/common/ut_helpers/dq_fake_ca.h +++ b/ydb/library/yql/providers/common/ut_helpers/dq_fake_ca.h @@ -119,7 +119,7 @@ public: void InitAsyncOutput(IDqComputeActorAsyncOutput* dqAsyncOutput, IActor* dqAsyncOutputAsActor); void InitAsyncInput(IDqComputeActorAsyncInput* dqAsyncInput, IActor* dqAsyncInputAsActor); - void Terminate(); + void Terminate(std::shared_ptr<std::atomic<bool>> done); TAsyncOutputCallbacks& GetAsyncOutputCallbacks(); NKikimr::NMiniKQL::THolderFactory& GetHolderFactory(); |