aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorivanmorozov <ivanmorozov@yandex-team.com>2023-10-14 19:22:48 +0300
committerivanmorozov <ivanmorozov@yandex-team.com>2023-10-14 19:52:43 +0300
commit3a0ef9c562a551c13d20212dd8c94d630cf1dde0 (patch)
treef061df037b50f68d88316f8874237ed7b9e899a3
parent500a0e1ae0987bfa4a17c6baa9c978724d7656eb (diff)
downloadydb-3a0ef9c562a551c13d20212dd8c94d630cf1dde0.tar.gz
KIKIMR-19704: add validation for prevent repeateble execution task
-rw-r--r--ydb/core/tx/conveyor/usage/abstract.cpp3
-rw-r--r--ydb/core/tx/conveyor/usage/abstract.h1
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;