diff options
author | ivanmorozov <ivanmorozov@yandex-team.com> | 2023-10-14 19:22:48 +0300 |
---|---|---|
committer | ivanmorozov <ivanmorozov@yandex-team.com> | 2023-10-14 19:52:43 +0300 |
commit | 3a0ef9c562a551c13d20212dd8c94d630cf1dde0 (patch) | |
tree | f061df037b50f68d88316f8874237ed7b9e899a3 | |
parent | 500a0e1ae0987bfa4a17c6baa9c978724d7656eb (diff) | |
download | ydb-3a0ef9c562a551c13d20212dd8c94d630cf1dde0.tar.gz |
KIKIMR-19704: add validation for prevent repeateble execution task
-rw-r--r-- | ydb/core/tx/conveyor/usage/abstract.cpp | 3 | ||||
-rw-r--r-- | ydb/core/tx/conveyor/usage/abstract.h | 1 |
2 files changed, 4 insertions, 0 deletions
diff --git a/ydb/core/tx/conveyor/usage/abstract.cpp b/ydb/core/tx/conveyor/usage/abstract.cpp index 44c0483501..629fcd4646 100644 --- a/ydb/core/tx/conveyor/usage/abstract.cpp +++ b/ydb/core/tx/conveyor/usage/abstract.cpp @@ -1,10 +1,13 @@ #include "abstract.h" #include <library/cpp/actors/core/monotonic.h> +#include <library/cpp/actors/core/log.h> #include <util/generic/yexception.h> #include <util/string/builder.h> namespace NKikimr::NConveyor { bool ITask::Execute(std::shared_ptr<TTaskSignals> signals) { + AFL_VERIFY(!ExecutedFlag); + ExecutedFlag = true; bool result = false; const TMonotonic start = TMonotonic::Now(); try { diff --git a/ydb/core/tx/conveyor/usage/abstract.h b/ydb/core/tx/conveyor/usage/abstract.h index a3f8f13138..237dbad792 100644 --- a/ydb/core/tx/conveyor/usage/abstract.h +++ b/ydb/core/tx/conveyor/usage/abstract.h @@ -40,6 +40,7 @@ private: YDB_READONLY_DEF(TString, ErrorMessage); YDB_ACCESSOR(EPriority, Priority, EPriority::Normal); YDB_READONLY_DEF(std::optional<NActors::TActorId>, OwnerId); + bool ExecutedFlag = false; protected: ITask& SetErrorMessage(const TString& message) { ErrorMessage = message; |