diff options
author | grigoriypisar <grigoriypisar@yandex-team.com> | 2023-07-01 11:06:29 +0300 |
---|---|---|
committer | grigoriypisar <grigoriypisar@yandex-team.com> | 2023-07-01 11:06:29 +0300 |
commit | 53a0ced5335b33e79843e7ef3566348e257a2449 (patch) | |
tree | 66e2b402a7d8a5b0b7b2f5c582e7413da7c59c78 | |
parent | 936178f666280af0bb960fde32c2fbaf0e86d330 (diff) | |
download | ydb-53a0ced5335b33e79843e7ef3566348e257a2449.tar.gz |
Fix issues in
Deleted run_script_actor/ut/
Fixed issues #1 iter
22 files changed, 251 insertions, 686 deletions
diff --git a/ydb/core/kqp/common/events/script_executions.h b/ydb/core/kqp/common/events/script_executions.h index 2ed8218fef3..26e876c4943 100644 --- a/ydb/core/kqp/common/events/script_executions.h +++ b/ydb/core/kqp/common/events/script_executions.h @@ -89,12 +89,14 @@ struct TEvListScriptExecutionOperationsResponse : public NActors::TEventLocal<TE }; struct TEvScriptLeaseUpdateResponse : public NActors::TEventLocal<TEvScriptLeaseUpdateResponse, TKqpScriptExecutionEvents::EvScriptLeaseUpdateResponse> { - TEvScriptLeaseUpdateResponse(Ydb::StatusIds::StatusCode status, NYql::TIssues issues) - : Status(status) + TEvScriptLeaseUpdateResponse(bool executionEntryExists, Ydb::StatusIds::StatusCode status, NYql::TIssues issues) + : ExecutionEntryExists(executionEntryExists) + , Status(status) , Issues(std::move(issues)) { } + bool ExecutionEntryExists; Ydb::StatusIds::StatusCode Status; NYql::TIssues Issues; }; diff --git a/ydb/core/kqp/proxy_service/kqp_script_executions.cpp b/ydb/core/kqp/proxy_service/kqp_script_executions.cpp index 7bc832ccfb1..358178f255b 100644 --- a/ydb/core/kqp/proxy_service/kqp_script_executions.cpp +++ b/ydb/core/kqp/proxy_service/kqp_script_executions.cpp @@ -25,6 +25,7 @@ #include <library/cpp/actors/core/log.h> #include <library/cpp/protobuf/json/json2proto.h> #include <library/cpp/protobuf/json/proto2json.h> +#include <library/cpp/retry/retry_policy.h> #include <util/generic/guid.h> #include <util/generic/utility.h> @@ -558,17 +559,50 @@ private: class TScriptLeaseUpdater : public TQueryBase { public: - TScriptLeaseUpdater(const TString& database, const TString& executionId, const TInstant& leaseDeadline) + TScriptLeaseUpdater(const TString& database, const TString& executionId, TDuration leaseDuration) : Database(database) , ExecutionId(executionId) - , LeaseDeadline(leaseDeadline) + , LeaseDuration(leaseDuration) {} void OnRunQuery() override { TString sql = R"( DECLARE $database AS Text; DECLARE $execution_id AS Text; - DECLARE $lease_deadline AS Datetime; + + SELECT lease_deadline FROM `.metadata/script_execution_leases` + WHERE database = $database AND execution_id = $execution_id; + )"; + + NYdb::TParamsBuilder params; + params + .AddParam("$database") + .Utf8(Database) + .Build() + .AddParam("$execution_id") + .Utf8(ExecutionId) + .Build(); + + RunDataQuery(sql, ¶ms, TTxControl::BeginTx()); + SetQueryResultHandler(&TScriptLeaseUpdater::OnGetLeaseInfo); + } + + void OnGetLeaseInfo() { + if (ResultSets.size() != 1) { + Finish(Ydb::StatusIds::INTERNAL_ERROR, "Unexpected database response"); + return; + } + NYdb::TResultSetParser result(ResultSets[0]); + if (result.RowsCount() == 0) { + LeaseExists = false; + Finish(Ydb::StatusIds::BAD_REQUEST, "No such execution"); + return; + } + + TString sql = R"( + DECLARE $database AS Text; + DECLARE $execution_id AS Text; + DECLARE $lease_deadline AS Timestamp; UPDATE `.metadata/script_execution_leases` SET lease_deadline=$lease_deadline @@ -584,10 +618,11 @@ public: .Utf8(ExecutionId) .Build() .AddParam("$lease_deadline") - .Datetime(LeaseDeadline) + .Timestamp(TInstant::Now() + LeaseDuration) .Build(); - RunDataQuery(sql, ¶ms); + RunDataQuery(sql, ¶ms, TTxControl::ContinueAndCommitTx()); + SetQueryResultHandler(&TScriptLeaseUpdater::OnQueryResult); } void OnQueryResult() override { @@ -595,28 +630,29 @@ public: } void OnFinish(Ydb::StatusIds::StatusCode status, NYql::TIssues&& issues) override { - Send(Owner, new TEvScriptLeaseUpdateResponse(status, std::move(issues))); + Send(Owner, new TEvScriptLeaseUpdateResponse(LeaseExists, status, std::move(issues))); } private: const TString Database; const TString ExecutionId; - const TInstant LeaseDeadline; + const TDuration LeaseDuration; + bool LeaseExists = true; }; class TScriptLeaseUpdateActor : public TActorBootstrapped<TScriptLeaseUpdateActor> { - static constexpr ui32 MAX_NUMBER_OF_ATTEMPTS = 5; - public: - TScriptLeaseUpdateActor(const TActorId& runScriptActorId, const TString& database, const TString& executionId, const TInstant& leaseDeadline) + using IRetryPolicy = IRetryPolicy<const Ydb::StatusIds::StatusCode&>; + + TScriptLeaseUpdateActor(const TActorId& runScriptActorId, const TString& database, const TString& executionId, TDuration leaseDuration) : RunScriptActorId(runScriptActorId) , Database(database) , ExecutionId(executionId) - , LeaseDeadline(leaseDeadline) + , LeaseDuration(leaseDuration) {} void CreateScriptLeaseUpdater() { - Register(new TScriptLeaseUpdater(Database, ExecutionId, LeaseDeadline)); + Register(new TScriptLeaseUpdater(Database, ExecutionId, LeaseDuration)); } void Bootstrap() { @@ -626,32 +662,69 @@ public: STRICT_STFUNC(StateFunc, hFunc(TEvScriptLeaseUpdateResponse, Handle); + hFunc(NActors::TEvents::TEvWakeup, Wakeup); ) + void Wakeup(NActors::TEvents::TEvWakeup::TPtr&) { + CreateScriptLeaseUpdater(); + } + void Handle(TEvScriptLeaseUpdateResponse::TPtr& ev) { - NumberOfAttempts += 1; - Response = std::move(ev); - - if (Response->Get()->Status == Ydb::StatusIds::SUCCESS || NumberOfAttempts == MAX_NUMBER_OF_ATTEMPTS) { - Reply(); + auto queryStatus = ev->Get()->Status; + if (!ev->Get()->ExecutionEntryExists && queryStatus == Ydb::StatusIds::BAD_REQUEST || queryStatus == Ydb::StatusIds::SUCCESS) { + Reply(std::move(ev)); return; } - CreateScriptLeaseUpdater(); + if (RetryState == nullptr) { + CreateRetryState(); + } + + const TMaybe<TDuration> delay = RetryState->GetNextRetryDelay(queryStatus); + if (delay) { + Schedule(*delay, new NActors::TEvents::TEvWakeup()); + } else { + Reply(std::move(ev)); + } } - void Reply() { - Send(RunScriptActorId, Response->Release().Release()); + void Reply(TEvScriptLeaseUpdateResponse::TPtr&& ev) { + Send(RunScriptActorId, ev->Release().Release()); PassAway(); } + static ERetryErrorClass Retryable(const Ydb::StatusIds::StatusCode& status) { + if (status == Ydb::StatusIds::SUCCESS) { + return ERetryErrorClass::NoRetry; + } + + if (status == Ydb::StatusIds::INTERNAL_ERROR + || status == Ydb::StatusIds::UNAVAILABLE + || status == Ydb::StatusIds::TIMEOUT + || status == Ydb::StatusIds::BAD_SESSION + || status == Ydb::StatusIds::SESSION_EXPIRED + || status == Ydb::StatusIds::SESSION_BUSY) { + return ERetryErrorClass::ShortRetry; + } + + if (status == Ydb::StatusIds::OVERLOADED) { + return ERetryErrorClass::LongRetry; + } + + return ERetryErrorClass::NoRetry; + } + + void CreateRetryState() { + IRetryPolicy::TPtr policy = IRetryPolicy::GetExponentialBackoffPolicy(Retryable, TDuration::MilliSeconds(10), TDuration::MilliSeconds(200), TDuration::Seconds(1), std::numeric_limits<size_t>::max(), LeaseDuration / 2); + RetryState = policy->CreateRetryState(); + } + private: TActorId RunScriptActorId; TString Database; TString ExecutionId; - TInstant LeaseDeadline; - TEvScriptLeaseUpdateResponse::TPtr Response; - ui32 NumberOfAttempts = 0; + TDuration LeaseDuration; + IRetryPolicy::IRetryState::TPtr RetryState = nullptr; }; class TScriptExecutionFinisherBase : public TQueryBase { @@ -1985,8 +2058,8 @@ NActors::IActor* CreateGetRunScriptActorActor(TEvKqp::TEvGetRunScriptActorReques return new TGetRunScriptActorActor(std::move(ev)); } -NActors::IActor* CreateScriptLeaseUpdateActor(const TActorId& runScriptActorId, const TString& database, const TString& executionId, const TInstant& leaseDeadline) { - return new TScriptLeaseUpdateActor(runScriptActorId, database, executionId, leaseDeadline); +NActors::IActor* CreateScriptLeaseUpdateActor(const TActorId& runScriptActorId, const TString& database, const TString& executionId, TDuration leaseDuration) { + return new TScriptLeaseUpdateActor(runScriptActorId, database, executionId, leaseDuration); } NActors::IActor* CreateSaveScriptExecutionResultMetaActor(const NActors::TActorId& replyActorId, const TString& database, const TString& executionId, const TString& serializedMeta) { diff --git a/ydb/core/kqp/proxy_service/kqp_script_executions.h b/ydb/core/kqp/proxy_service/kqp_script_executions.h index 901c143e0ce..8ce520a1187 100644 --- a/ydb/core/kqp/proxy_service/kqp_script_executions.h +++ b/ydb/core/kqp/proxy_service/kqp_script_executions.h @@ -35,7 +35,7 @@ NActors::IActor* CreateScriptExecutionFinisher( ); // Updates lease deadline in database. -NActors::IActor* CreateScriptLeaseUpdateActor(const TActorId& runScriptActorId, const TString& database, const TString& executionId, const TInstant& leaseDeadline); +NActors::IActor* CreateScriptLeaseUpdateActor(const TActorId& runScriptActorId, const TString& database, const TString& executionId, TDuration leaseDuration); // Store and fetch results. NActors::IActor* CreateSaveScriptExecutionResultMetaActor(const NActors::TActorId& runScriptActorId, const TString& database, const TString& executionId, const TString& serializedMeta); NActors::IActor* CreateSaveScriptExecutionResultActor(const NActors::TActorId& runScriptActorId, const TString& database, const TString& executionId, i32 resultSetId, TInstant expireAt, i64 firstRow, std::vector<TString>&& serializedRows); diff --git a/ydb/core/kqp/proxy_service/kqp_script_executions_ut.cpp b/ydb/core/kqp/proxy_service/kqp_script_executions_ut.cpp index 9cf871e3030..cb997c85fc5 100644 --- a/ydb/core/kqp/proxy_service/kqp_script_executions_ut.cpp +++ b/ydb/core/kqp/proxy_service/kqp_script_executions_ut.cpp @@ -108,29 +108,8 @@ struct TScriptExecutionsYdbSetup { return reply; } -public: - TPortManager PortManager; - ui16 MsgBusPort = 0; - ui16 GrpcPort = 0; - THolder<Tests::TServerSettings> ServerSettings; - THolder<Tests::TServer> Server; - THolder<Tests::TClient> Client; - THolder<NYdb::TDriver> YdbDriver; - THolder<NYdb::NTable::TTableClient> TableClient; - THolder<NYdb::NTable::TSession> TableClientSession; -}; - -} - -Y_UNIT_TEST_SUITE(ScriptExecutionsTest) { - Y_UNIT_TEST(RunCheckLeaseStatus) { - TScriptExecutionsYdbSetup ydb; - - const TString executionId = ydb.CreateQueryInDb(); - UNIT_ASSERT(executionId); - const TInstant startLeaseTime = TInstant::Now(); - auto checkLeaseExistance = [&](bool expectedExistance, TMaybe<i32> expectedStatus) { - TStringBuilder sql; + void CheckLeaseExistance(const TString& executionId, bool expectedExistance, TMaybe<i32> expectedStatus) { + TStringBuilder sql; sql << R"( SELECT COUNT(*) @@ -141,6 +120,7 @@ Y_UNIT_TEST_SUITE(ScriptExecutionsTest) { FROM `.metadata/script_executions` WHERE database = $database AND execution_id = $execution_id; )"; + NYdb::TParamsBuilder params; params .AddParam("$database") @@ -149,29 +129,105 @@ Y_UNIT_TEST_SUITE(ScriptExecutionsTest) { .AddParam("$execution_id") .Utf8(executionId) .Build(); - auto result = ydb.TableClientSession->ExecuteDataQuery(sql, NYdb::NTable::TTxControl::BeginTx().CommitTx(), params.Build()).ExtractValueSync(); + + auto result = TableClientSession->ExecuteDataQuery(sql, NYdb::NTable::TTxControl::BeginTx().CommitTx(), params.Build()).ExtractValueSync(); UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString()); + NYdb::TResultSetParser rs1 = result.GetResultSetParser(0); UNIT_ASSERT(rs1.TryNextRow()); + auto count = rs1.ColumnParser(0).GetUint64(); UNIT_ASSERT_VALUES_EQUAL(count, expectedExistance ? 1 : 0); NYdb::TResultSetParser rs2 = result.GetResultSetParser(1); UNIT_ASSERT(rs2.TryNextRow()); + UNIT_ASSERT_VALUES_EQUAL(rs2.ColumnParser("operation_status").GetOptionalInt32(), expectedStatus); - }; - checkLeaseExistance(true, Nothing()); + } + + THolder<TEvScriptLeaseUpdateResponse> UpdateLease(const TString& executionId, TDuration leaseDuration) { + GetRuntime()->Register(CreateScriptLeaseUpdateActor(GetRuntime()->AllocateEdgeActor(), TestDatabase, executionId, leaseDuration)); + auto reply = GetRuntime()->GrabEdgeEvent<TEvScriptLeaseUpdateResponse>(); + + UNIT_ASSERT(reply != nullptr); + return reply; + } + +public: + TPortManager PortManager; + ui16 MsgBusPort = 0; + ui16 GrpcPort = 0; + THolder<Tests::TServerSettings> ServerSettings; + THolder<Tests::TServer> Server; + THolder<Tests::TClient> Client; + THolder<NYdb::TDriver> YdbDriver; + THolder<NYdb::NTable::TTableClient> TableClient; + THolder<NYdb::NTable::TSession> TableClientSession; +}; + +} + +Y_UNIT_TEST_SUITE(ScriptExecutionsTest) { + Y_UNIT_TEST(RunCheckLeaseStatus) { + TScriptExecutionsYdbSetup ydb; + + const TString executionId = ydb.CreateQueryInDb(); + UNIT_ASSERT(executionId); + const TInstant startLeaseTime = TInstant::Now(); + ydb.CheckLeaseExistance(executionId, true, Nothing()); auto checkResult1 = ydb.CheckLeaseStatus(executionId); const TDuration checkTime = TInstant::Now() - startLeaseTime; if (checkTime < TestLeaseDuration) { UNIT_ASSERT_VALUES_EQUAL(checkResult1->Get()->OperationStatus, Nothing()); - checkLeaseExistance(true, Nothing()); + ydb.CheckLeaseExistance(executionId, true, Nothing()); SleepUntil(startLeaseTime + TestLeaseDuration); } auto checkResult2 = ydb.CheckLeaseStatus(executionId); UNIT_ASSERT_VALUES_EQUAL(checkResult2->Get()->OperationStatus, Ydb::StatusIds::ABORTED); - checkLeaseExistance(false, Ydb::StatusIds::ABORTED); + ydb.CheckLeaseExistance(executionId, false, Ydb::StatusIds::ABORTED); + } + + Y_UNIT_TEST(UpdatesLeaseAfterExpiring) { + TScriptExecutionsYdbSetup ydb; + + const TString executionId = ydb.CreateQueryInDb(); + UNIT_ASSERT(executionId); + + TInstant startLeaseTime = TInstant::Now(); + + ydb.CheckLeaseExistance(executionId, true, Nothing()); + SleepUntil(startLeaseTime + TestLeaseDuration); + + startLeaseTime = TInstant::Now(); + TDuration leaseDuration = TDuration::Seconds(10); + auto updateResponse = ydb.UpdateLease(executionId, leaseDuration); + UNIT_ASSERT_C(updateResponse->Status == Ydb::StatusIds::SUCCESS, updateResponse->Issues.ToString()); + UNIT_ASSERT(updateResponse->ExecutionEntryExists); + + ydb.CheckLeaseExistance(executionId, true, Nothing()); + auto checkResult = ydb.CheckLeaseStatus(executionId); + + if (TInstant::Now() - startLeaseTime < leaseDuration) { + UNIT_ASSERT_VALUES_EQUAL(checkResult->Get()->OperationStatus, Nothing()); + } + } + + Y_UNIT_TEST(AttemptToUpdateDeletedLease) { + TScriptExecutionsYdbSetup ydb; + + const TString executionId = ydb.CreateQueryInDb(); + UNIT_ASSERT(executionId); + ydb.CheckLeaseExistance(executionId, true, Nothing()); + + Sleep(TestLeaseDuration); + + auto checkResult = ydb.CheckLeaseStatus(executionId); + UNIT_ASSERT_VALUES_EQUAL(checkResult->Get()->OperationStatus, Ydb::StatusIds::ABORTED); + ydb.CheckLeaseExistance(executionId, false, Ydb::StatusIds::ABORTED); + + auto updateResponse = ydb.UpdateLease(executionId, TestLeaseDuration); + UNIT_ASSERT(!updateResponse->ExecutionEntryExists); } } } // namespace NKikimr::NKqp diff --git a/ydb/core/kqp/proxy_service/ut/CMakeLists.darwin-x86_64.txt b/ydb/core/kqp/proxy_service/ut/CMakeLists.darwin-x86_64.txt index 6361e9f8d40..2d9b36b906f 100644 --- a/ydb/core/kqp/proxy_service/ut/CMakeLists.darwin-x86_64.txt +++ b/ydb/core/kqp/proxy_service/ut/CMakeLists.darwin-x86_64.txt @@ -20,6 +20,7 @@ target_link_libraries(ydb-core-kqp-proxy_service-ut PUBLIC library-cpp-cpuid_check cpp-testing-unittest_main core-kqp-proxy_service + core-kqp-run_script_actor kqp-ut-common yql-sql-pg_dummy client-draft-ydb_query diff --git a/ydb/core/kqp/proxy_service/ut/CMakeLists.linux-aarch64.txt b/ydb/core/kqp/proxy_service/ut/CMakeLists.linux-aarch64.txt index 5d98a958e97..1207f009f12 100644 --- a/ydb/core/kqp/proxy_service/ut/CMakeLists.linux-aarch64.txt +++ b/ydb/core/kqp/proxy_service/ut/CMakeLists.linux-aarch64.txt @@ -20,6 +20,7 @@ target_link_libraries(ydb-core-kqp-proxy_service-ut PUBLIC yutil cpp-testing-unittest_main core-kqp-proxy_service + core-kqp-run_script_actor kqp-ut-common yql-sql-pg_dummy client-draft-ydb_query diff --git a/ydb/core/kqp/proxy_service/ut/CMakeLists.linux-x86_64.txt b/ydb/core/kqp/proxy_service/ut/CMakeLists.linux-x86_64.txt index eb755cfbaf8..58b86600408 100644 --- a/ydb/core/kqp/proxy_service/ut/CMakeLists.linux-x86_64.txt +++ b/ydb/core/kqp/proxy_service/ut/CMakeLists.linux-x86_64.txt @@ -21,6 +21,7 @@ target_link_libraries(ydb-core-kqp-proxy_service-ut PUBLIC library-cpp-cpuid_check cpp-testing-unittest_main core-kqp-proxy_service + core-kqp-run_script_actor kqp-ut-common yql-sql-pg_dummy client-draft-ydb_query diff --git a/ydb/core/kqp/proxy_service/ut/CMakeLists.windows-x86_64.txt b/ydb/core/kqp/proxy_service/ut/CMakeLists.windows-x86_64.txt index d2ffaaf4d26..acd63e44e89 100644 --- a/ydb/core/kqp/proxy_service/ut/CMakeLists.windows-x86_64.txt +++ b/ydb/core/kqp/proxy_service/ut/CMakeLists.windows-x86_64.txt @@ -20,6 +20,7 @@ target_link_libraries(ydb-core-kqp-proxy_service-ut PUBLIC library-cpp-cpuid_check cpp-testing-unittest_main core-kqp-proxy_service + core-kqp-run_script_actor kqp-ut-common yql-sql-pg_dummy client-draft-ydb_query diff --git a/ydb/core/kqp/proxy_service/ut/ya.make b/ydb/core/kqp/proxy_service/ut/ya.make index a2a8338a00b..76c4e7fa6f1 100644 --- a/ydb/core/kqp/proxy_service/ut/ya.make +++ b/ydb/core/kqp/proxy_service/ut/ya.make @@ -10,6 +10,7 @@ SRCS( ) PEERDIR( + ydb/core/kqp/run_script_actor ydb/core/kqp/proxy_service ydb/core/kqp/ut/common ydb/library/yql/sql/pg_dummy diff --git a/ydb/core/kqp/run_script_actor/CMakeLists.darwin-x86_64.txt b/ydb/core/kqp/run_script_actor/CMakeLists.darwin-x86_64.txt index 3c2be21b07d..dc4d457a24b 100644 --- a/ydb/core/kqp/run_script_actor/CMakeLists.darwin-x86_64.txt +++ b/ydb/core/kqp/run_script_actor/CMakeLists.darwin-x86_64.txt @@ -6,7 +6,6 @@ # original buildsystem will not be accepted. -add_subdirectory(ut) add_library(core-kqp-run_script_actor) target_compile_options(core-kqp-run_script_actor PRIVATE diff --git a/ydb/core/kqp/run_script_actor/CMakeLists.linux-aarch64.txt b/ydb/core/kqp/run_script_actor/CMakeLists.linux-aarch64.txt index b4e8d475923..64bce9401b0 100644 --- a/ydb/core/kqp/run_script_actor/CMakeLists.linux-aarch64.txt +++ b/ydb/core/kqp/run_script_actor/CMakeLists.linux-aarch64.txt @@ -6,7 +6,6 @@ # original buildsystem will not be accepted. -add_subdirectory(ut) add_library(core-kqp-run_script_actor) target_compile_options(core-kqp-run_script_actor PRIVATE diff --git a/ydb/core/kqp/run_script_actor/CMakeLists.linux-x86_64.txt b/ydb/core/kqp/run_script_actor/CMakeLists.linux-x86_64.txt index b4e8d475923..64bce9401b0 100644 --- a/ydb/core/kqp/run_script_actor/CMakeLists.linux-x86_64.txt +++ b/ydb/core/kqp/run_script_actor/CMakeLists.linux-x86_64.txt @@ -6,7 +6,6 @@ # original buildsystem will not be accepted. -add_subdirectory(ut) add_library(core-kqp-run_script_actor) target_compile_options(core-kqp-run_script_actor PRIVATE diff --git a/ydb/core/kqp/run_script_actor/CMakeLists.windows-x86_64.txt b/ydb/core/kqp/run_script_actor/CMakeLists.windows-x86_64.txt index 3c2be21b07d..dc4d457a24b 100644 --- a/ydb/core/kqp/run_script_actor/CMakeLists.windows-x86_64.txt +++ b/ydb/core/kqp/run_script_actor/CMakeLists.windows-x86_64.txt @@ -6,7 +6,6 @@ # original buildsystem will not be accepted. -add_subdirectory(ut) add_library(core-kqp-run_script_actor) target_compile_options(core-kqp-run_script_actor PRIVATE diff --git a/ydb/core/kqp/run_script_actor/kqp_run_script_actor.cpp b/ydb/core/kqp/run_script_actor/kqp_run_script_actor.cpp index a79f4531343..9814c706aad 100644 --- a/ydb/core/kqp/run_script_actor/kqp_run_script_actor.cpp +++ b/ydb/core/kqp/run_script_actor/kqp_run_script_actor.cpp @@ -42,6 +42,12 @@ class TRunScriptActor : public NActors::TActorBootstrapped<TRunScriptActor> { Finishing, Finished, }; + + enum EWakeUp { + RunEvent, + UpdateLeaseEvent, + }; + public: TRunScriptActor(const TString& executionId, const NKikimrKqp::TEvQueryRequest& request, const TString& database, ui64 leaseGeneration, TDuration leaseDuration) : ExecutionId(executionId) @@ -54,7 +60,6 @@ public: static constexpr char ActorName[] = "KQP_RUN_SCRIPT_ACTOR"; void Bootstrap() { - Schedule(LeaseDuration / LEASE_UPDATE_FREQUENCY, new NActors::TEvents::TEvWakeup(1)); Become(&TRunScriptActor::StateFunc); } @@ -130,27 +135,56 @@ private: // TODO: remove this after there will be a normal way to store results and generate execution id void Handle(NActors::TEvents::TEvWakeup::TPtr& ev) { - if (ev->Get()->Tag == 1) { - if (!IsLeaseUpdateRunning) { - RegisterWithSameMailbox(CreateScriptLeaseUpdateActor(SelfId(), Database, ExecutionId, TInstant::Now() + LeaseDuration)); - IsLeaseUpdateRunning = true; + switch (ev->Get()->Tag) { + case EWakeUp::RunEvent: + Schedule(LeaseDuration / LEASE_UPDATE_FREQUENCY, new NActors::TEvents::TEvWakeup(EWakeUp::UpdateLeaseEvent)); + RunState = ERunState::Running; + CreateSession(); + break; + + case EWakeUp::UpdateLeaseEvent: + if (RunState == ERunState::Cancelled || RunState == ERunState::Cancelling || RunState == ERunState::Finished || RunState == ERunState::Finishing) { + break; } - Schedule(LeaseDuration / LEASE_UPDATE_FREQUENCY, new NActors::TEvents::TEvWakeup(1)); + if (!LeaseUpdateQueryRunning && !FinalStatusIsSaved) { + Register(CreateScriptLeaseUpdateActor(SelfId(), Database, ExecutionId, LeaseDuration)); + LeaseUpdateQueryRunning = true; + } + Schedule(LeaseDuration / LEASE_UPDATE_FREQUENCY, new NActors::TEvents::TEvWakeup(EWakeUp::UpdateLeaseEvent)); + break; + } + } + + void RunScriptExecutionFinisher() { + if (!FinalStatusIsSaved) { + Register(CreateScriptExecutionFinisher(ExecutionId, Database, LeaseGeneration, Status, GetExecStatusFromStatusCode(Status), + Issues, std::move(QueryPlan))); return; } + + RunState = ERunState::Finished; - if (RunState == ERunState::Created) { - RunState = ERunState::Running; - CreateSession(); + for (auto& req : CancelRequests) { + Send(req->Sender, new TEvKqp::TEvCancelScriptExecutionResponse(Ydb::StatusIds::PRECONDITION_FAILED, "Already finished")); } + CancelRequests.clear(); } void Handle(TEvScriptLeaseUpdateResponse::TPtr& ev) { - if (ev->Get()->Status != Ydb::StatusIds::SUCCESS) { + LeaseUpdateQueryRunning = false; + + if (!ev->Get()->ExecutionEntryExists) { + FinalStatusIsSaved = true; + if (RunState == ERunState::Running) { + CancelRunningQuery(); + } + } + + if (FinishAfterLeaseUpdate) { + RunScriptExecutionFinisher(); + } else if (IsExecuting() && ev->Get()->Status != Ydb::StatusIds::SUCCESS) { Finish(ev->Get()->Status); - } else { - IsLeaseUpdateRunning = false; } } @@ -372,7 +406,7 @@ private: Status = ev->Get()->Status; Issues.AddIssues(ev->Get()->Issues); } - CheckSaveInflight(); + CheckInflight(); } void Handle(TEvSaveScriptResultFinished::TPtr& ev) { @@ -381,7 +415,7 @@ private: Status = ev->Get()->Status; Issues.AddIssues(ev->Get()->Issues); } - CheckSaveInflight(); + CheckInflight(); } static Ydb::Query::ExecStatus GetExecStatusFromStatusCode(Ydb::StatusIds::StatusCode status) { @@ -395,14 +429,18 @@ private: } - void CheckSaveInflight() { + void CheckInflight() { if (Status == Ydb::StatusIds::STATUS_CODE_UNSPECIFIED || (Status == Ydb::StatusIds::SUCCESS && RunState == ERunState::Finishing && (SaveResultMetaInflight || SaveResultInflight))) { // waiting for script completion return; } - Register(CreateScriptExecutionFinisher(ExecutionId, Database, LeaseGeneration, Status, GetExecStatusFromStatusCode(Status), - Issues, std::move(QueryPlan))); + if (!LeaseUpdateQueryRunning) { + RunScriptExecutionFinisher(); + } else { + FinishAfterLeaseUpdate = true; + } + if (RunState == ERunState::Cancelling) { Issues.AddIssue("Script execution is cancelled"); } @@ -419,7 +457,7 @@ private: SaveResultMeta(); SaveResultMetaInflight++; } else { - CheckSaveInflight(); + CheckInflight(); } } @@ -442,7 +480,9 @@ private: const ui64 LeaseGeneration; const TDuration LeaseDuration; TString SessionId; - bool IsLeaseUpdateRunning = false; + bool LeaseUpdateQueryRunning = false; + bool FinalStatusIsSaved = false; + bool FinishAfterLeaseUpdate = false; ERunState RunState = ERunState::Created; std::forward_list<TEvKqp::TEvCancelScriptExecutionRequest::TPtr> CancelRequests; diff --git a/ydb/core/kqp/run_script_actor/kqp_run_script_actor_ut.cpp b/ydb/core/kqp/run_script_actor/kqp_run_script_actor_ut.cpp deleted file mode 100644 index c1348543f33..00000000000 --- a/ydb/core/kqp/run_script_actor/kqp_run_script_actor_ut.cpp +++ /dev/null @@ -1,253 +0,0 @@ -#include "kqp_run_script_actor.h" - -#include <ydb/core/kqp/proxy_service/kqp_script_executions.h> -#include <ydb/core/kqp/proxy_service/kqp_script_executions_impl.h> - -#include <ydb/core/testlib/test_client.h> -#include <ydb/core/testlib/basics/appdata.h> -#include <ydb/services/ydb/ydb_common_ut.h> -#include <ydb/public/sdk/cpp/client/ydb_driver/driver.h> -#include <ydb/public/sdk/cpp/client/ydb_table/table.h> - -#include <library/cpp/actors/interconnect/interconnect_impl.h> - -namespace NKikimr::NKqp { - -using namespace Tests; -using namespace NSchemeShard; - -namespace { - -constexpr TDuration TestLeaseDuration = TDuration::Seconds(1); -const TString TestDatabase = "test_db"; - -struct TScriptExecutionsYdbSetup { - TScriptExecutionsYdbSetup() { - Init(); - } - - void Init() { - MsgBusPort = PortManager.GetPort(2134); - GrpcPort = PortManager.GetPort(2135); - ServerSettings = MakeHolder<Tests::TServerSettings>(MsgBusPort); - ServerSettings->SetEnableScriptExecutionOperations(true); - ServerSettings->SetGrpcPort(GrpcPort); - Server = MakeHolder<Tests::TServer>(*ServerSettings); - Client = MakeHolder<Tests::TClient>(*ServerSettings); - - // Logging - GetRuntime()->SetLogPriority(NKikimrServices::KQP_PROXY, NActors::NLog::PRI_DEBUG); - Server->EnableGRpc(GrpcPort); - Client->InitRootScheme(); - - WaitInitScriptExecutionsTables(); - - // Init sdk - NYdb::TDriverConfig driverCfg; - driverCfg - .SetEndpoint(TStringBuilder() << "localhost:" << GrpcPort) - .SetDatabase(Tests::TestDomainName); - YdbDriver = MakeHolder<NYdb::TDriver>(driverCfg); - TableClient = MakeHolder<NYdb::NTable::TTableClient>(*YdbDriver); - auto createSessionResult = TableClient->CreateSession().ExtractValueSync(); - UNIT_ASSERT_C(createSessionResult.IsSuccess(), createSessionResult.GetIssues().ToString()); - TableClientSession = MakeHolder<NYdb::NTable::TSession>(createSessionResult.GetSession()); - } - - TTestActorRuntime* GetRuntime() { - return Server->GetRuntime(); - } - - void WaitInitScriptExecutionsTables() { - while (!RunSelect42Script()) { - Sleep(TDuration::MilliSeconds(10)); - } - } - - bool RunSelect42Script(ui32 node = 0) { - TActorId edgeActor = GetRuntime()->AllocateEdgeActor(node); - - TActorId kqpProxy = MakeKqpProxyID(GetRuntime()->GetNodeId(node)); - - auto ev = MakeHolder<TEvKqp::TEvScriptRequest>(); - auto& req = *ev->Record.MutableRequest(); - req.SetQuery("SELECT 42"); - req.SetType(NKikimrKqp::QUERY_TYPE_SQL_GENERIC_SCRIPT); - req.SetAction(NKikimrKqp::QUERY_ACTION_EXECUTE); - req.SetDatabase(ServerSettings->DomainName); - - GetRuntime()->Send(new IEventHandle(kqpProxy, edgeActor, ev.Release()), node); - - auto reply = GetRuntime()->GrabEdgeEvent<TEvKqp::TEvScriptResponse>(edgeActor); - Ydb::StatusIds::StatusCode status = reply->Get()->Status; - return status == Ydb::StatusIds::SUCCESS; - } - - // Creates query in db. Returns execution id - TString CreateQueryInDb(const TString& query = "SELECT 42", TDuration leaseDuration = TestLeaseDuration) { - TString executionId = CreateGuidAsString(); - NKikimrKqp::TEvQueryRequest req; - req.MutableRequest()->SetDatabase(TestDatabase); - req.MutableRequest()->SetQuery(query); - req.MutableRequest()->SetAction(NKikimrKqp::QUERY_ACTION_EXECUTE); - const ui32 node = 0; - TActorId edgeActor = GetRuntime()->AllocateEdgeActor(node); - GetRuntime()->Register(NPrivate::CreateCreateScriptOperationQueryActor(executionId, NActors::TActorId(), req, leaseDuration), 0, 0, TMailboxType::Simple, 0, edgeActor); - - auto reply = GetRuntime()->GrabEdgeEvent<NPrivate::TEvPrivate::TEvCreateScriptOperationResponse>(edgeActor); - UNIT_ASSERT(reply->Get()->Status == Ydb::StatusIds::SUCCESS); - UNIT_ASSERT_VALUES_EQUAL(executionId, reply->Get()->ExecutionId); - return reply->Get()->ExecutionId; - } - - NPrivate::TEvPrivate::TEvLeaseCheckResult::TPtr CheckLeaseStatus(const TString& executionId) { - const ui32 node = 0; - TActorId edgeActor = GetRuntime()->AllocateEdgeActor(node); - GetRuntime()->Register(NPrivate::CreateCheckLeaseStatusActor(TestDatabase, executionId), 0, 0, TMailboxType::Simple, 0, edgeActor); - - auto reply = GetRuntime()->GrabEdgeEvent<NPrivate::TEvPrivate::TEvLeaseCheckResult>(edgeActor); - UNIT_ASSERT(reply->Get()->Status == Ydb::StatusIds::SUCCESS); - return reply; - } - -public: - TPortManager PortManager; - ui16 MsgBusPort = 0; - ui16 GrpcPort = 0; - THolder<Tests::TServerSettings> ServerSettings; - THolder<Tests::TServer> Server; - THolder<Tests::TClient> Client; - THolder<NYdb::TDriver> YdbDriver; - THolder<NYdb::NTable::TTableClient> TableClient; - THolder<NYdb::NTable::TSession> TableClientSession; -}; - -} - -Y_UNIT_TEST_SUITE(RunScriptActorTest) { - Y_UNIT_TEST(CheckLeaseUpdater) { - TScriptExecutionsYdbSetup ydb; - - const TString executionId = ydb.CreateQueryInDb(); - UNIT_ASSERT(executionId); - - const TInstant startLeaseTime = TInstant::Now(); - - auto checkLeaseExistance = [&](bool expectedExistance, TMaybe<i32> expectedStatus) { - TStringBuilder sql; - sql << - R"( - SELECT COUNT(*) - FROM `.metadata/script_execution_leases` - WHERE database = $database AND execution_id = $execution_id; - - SELECT operation_status - FROM `.metadata/script_executions` - WHERE database = $database AND execution_id = $execution_id; - )"; - - NYdb::TParamsBuilder params; - params - .AddParam("$database") - .Utf8(TestDatabase) - .Build() - .AddParam("$execution_id") - .Utf8(executionId) - .Build(); - - auto result = ydb.TableClientSession->ExecuteDataQuery(sql, NYdb::NTable::TTxControl::BeginTx().CommitTx(), params.Build()).ExtractValueSync(); - UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString()); - - NYdb::TResultSetParser rs1 = result.GetResultSetParser(0); - UNIT_ASSERT(rs1.TryNextRow()); - - auto count = rs1.ColumnParser(0).GetUint64(); - UNIT_ASSERT_VALUES_EQUAL(count, expectedExistance ? 1 : 0); - - NYdb::TResultSetParser rs2 = result.GetResultSetParser(1); - UNIT_ASSERT(rs2.TryNextRow()); - - UNIT_ASSERT_VALUES_EQUAL(rs2.ColumnParser("operation_status").GetOptionalInt32(), expectedStatus); - }; - - checkLeaseExistance(true, Nothing()); - auto checkResult1 = ydb.CheckLeaseStatus(executionId); - - const TDuration checkTime = TInstant::Now() - startLeaseTime; - if (checkTime < TestLeaseDuration) { - UNIT_ASSERT_VALUES_EQUAL(checkResult1->Get()->OperationStatus, Nothing()); - checkLeaseExistance(true, Nothing()); - SleepUntil(startLeaseTime + TestLeaseDuration); - } - - TDuration maximalWaitTime = TDuration::Seconds(10); - ydb.GetRuntime()->Register(CreateScriptLeaseUpdateActor(ydb.GetRuntime()->AllocateEdgeActor(), TestDatabase, executionId, TInstant::Now() + 2 * maximalWaitTime)); - auto updateResponse = ydb.GetRuntime()->GrabEdgeEvent<TEvScriptLeaseUpdateResponse>(maximalWaitTime); - - if (updateResponse != nullptr) { - UNIT_ASSERT_C(updateResponse->Status == Ydb::StatusIds::SUCCESS, updateResponse->Issues.ToString()); - - auto checkResult2 = ydb.CheckLeaseStatus(executionId); - UNIT_ASSERT_VALUES_EQUAL(checkResult2->Get()->OperationStatus, Nothing()); - checkLeaseExistance(true, Nothing()); - } - } - - Y_UNIT_TEST(CheckRunScriptActorLeaseUpdater) { - TScriptExecutionsYdbSetup ydb; - - const TString executionId = ydb.CreateQueryInDb(); - UNIT_ASSERT(executionId); - - auto checkLeaseExistance = [&](bool expectedExistance, TMaybe<i32> expectedStatus) { - TStringBuilder sql; - sql << - R"( - SELECT COUNT(*) - FROM `.metadata/script_execution_leases` - WHERE database = $database AND execution_id = $execution_id; - - SELECT operation_status - FROM `.metadata/script_executions` - WHERE database = $database AND execution_id = $execution_id; - )"; - - NYdb::TParamsBuilder params; - params - .AddParam("$database") - .Utf8(TestDatabase) - .Build() - .AddParam("$execution_id") - .Utf8(executionId) - .Build(); - - auto result = ydb.TableClientSession->ExecuteDataQuery(sql, NYdb::NTable::TTxControl::BeginTx().CommitTx(), params.Build()).ExtractValueSync(); - UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString()); - - NYdb::TResultSetParser rs1 = result.GetResultSetParser(0); - UNIT_ASSERT(rs1.TryNextRow()); - - auto count = rs1.ColumnParser(0).GetUint64(); - UNIT_ASSERT_VALUES_EQUAL(count, expectedExistance ? 1 : 0); - - NYdb::TResultSetParser rs2 = result.GetResultSetParser(1); - UNIT_ASSERT(rs2.TryNextRow()); - - UNIT_ASSERT_VALUES_EQUAL(rs2.ColumnParser("operation_status").GetOptionalInt32(), expectedStatus); - }; - - checkLeaseExistance(true, Nothing()); - ydb.GetRuntime()->Register(CreateRunScriptActor(executionId, NKikimrKqp::TEvQueryRequest(), TestDatabase, 1, TestLeaseDuration)); - - const ui32 numberOfTests = 3; - for (ui32 i = 0; i < numberOfTests; ++i) { - Sleep(TestLeaseDuration); - - auto checkResult = ydb.CheckLeaseStatus(executionId); - UNIT_ASSERT_VALUES_EQUAL(checkResult->Get()->OperationStatus, Nothing()); - checkLeaseExistance(true, Nothing()); - } - } -} - -} diff --git a/ydb/core/kqp/run_script_actor/ut/CMakeLists.darwin-x86_64.txt b/ydb/core/kqp/run_script_actor/ut/CMakeLists.darwin-x86_64.txt deleted file mode 100644 index abd531632f4..00000000000 --- a/ydb/core/kqp/run_script_actor/ut/CMakeLists.darwin-x86_64.txt +++ /dev/null @@ -1,77 +0,0 @@ - -# This file was generated by the build system used internally in the Yandex monorepo. -# Only simple modifications are allowed (adding source-files to targets, adding simple properties -# like target_include_directories). These modifications will be ported to original -# ya.make files by maintainers. Any complex modifications which can't be ported back to the -# original buildsystem will not be accepted. - - - -add_executable(ydb-core-kqp-run_script_actor-ut) -target_compile_options(ydb-core-kqp-run_script_actor-ut PRIVATE - -DUSE_CURRENT_UDF_ABI_VERSION -) -target_include_directories(ydb-core-kqp-run_script_actor-ut PRIVATE - ${CMAKE_SOURCE_DIR}/ydb/core/kqp/run_script_actor -) -target_link_libraries(ydb-core-kqp-run_script_actor-ut PUBLIC - contrib-libs-cxxsupp - yutil - library-cpp-cpuid_check - cpp-testing-unittest_main - core-kqp-run_script_actor - cpp-threading-local_executor - ydb-core-kqp - kqp-ut-common - yql-sql-pg - yql-parser-pg_wrapper - cpp-client-ydb_operation - client-ydb_types-operation -) -target_link_options(ydb-core-kqp-run_script_actor-ut PRIVATE - -Wl,-platform_version,macos,11.0,11.0 - -fPIC - -fPIC - -framework - CoreFoundation -) -target_sources(ydb-core-kqp-run_script_actor-ut PRIVATE - ${CMAKE_SOURCE_DIR}/ydb/core/kqp/run_script_actor/kqp_run_script_actor_ut.cpp -) -set_property( - TARGET - ydb-core-kqp-run_script_actor-ut - PROPERTY - SPLIT_FACTOR - 50 -) -add_yunittest( - NAME - ydb-core-kqp-run_script_actor-ut - TEST_TARGET - ydb-core-kqp-run_script_actor-ut - TEST_ARG - --print-before-suite - --print-before-test - --fork-tests - --print-times - --show-fails -) -set_yunittest_property( - TEST - ydb-core-kqp-run_script_actor-ut - PROPERTY - LABELS - MEDIUM -) -set_yunittest_property( - TEST - ydb-core-kqp-run_script_actor-ut - PROPERTY - PROCESSORS - 1 -) -target_allocator(ydb-core-kqp-run_script_actor-ut - system_allocator -) -vcs_info(ydb-core-kqp-run_script_actor-ut) diff --git a/ydb/core/kqp/run_script_actor/ut/CMakeLists.linux-aarch64.txt b/ydb/core/kqp/run_script_actor/ut/CMakeLists.linux-aarch64.txt deleted file mode 100644 index da508d9d690..00000000000 --- a/ydb/core/kqp/run_script_actor/ut/CMakeLists.linux-aarch64.txt +++ /dev/null @@ -1,80 +0,0 @@ - -# This file was generated by the build system used internally in the Yandex monorepo. -# Only simple modifications are allowed (adding source-files to targets, adding simple properties -# like target_include_directories). These modifications will be ported to original -# ya.make files by maintainers. Any complex modifications which can't be ported back to the -# original buildsystem will not be accepted. - - - -add_executable(ydb-core-kqp-run_script_actor-ut) -target_compile_options(ydb-core-kqp-run_script_actor-ut PRIVATE - -DUSE_CURRENT_UDF_ABI_VERSION -) -target_include_directories(ydb-core-kqp-run_script_actor-ut PRIVATE - ${CMAKE_SOURCE_DIR}/ydb/core/kqp/run_script_actor -) -target_link_libraries(ydb-core-kqp-run_script_actor-ut PUBLIC - contrib-libs-linux-headers - contrib-libs-cxxsupp - yutil - cpp-testing-unittest_main - core-kqp-run_script_actor - cpp-threading-local_executor - ydb-core-kqp - kqp-ut-common - yql-sql-pg - yql-parser-pg_wrapper - cpp-client-ydb_operation - client-ydb_types-operation -) -target_link_options(ydb-core-kqp-run_script_actor-ut PRIVATE - -ldl - -lrt - -Wl,--no-as-needed - -fPIC - -fPIC - -lpthread - -lrt - -ldl -) -target_sources(ydb-core-kqp-run_script_actor-ut PRIVATE - ${CMAKE_SOURCE_DIR}/ydb/core/kqp/run_script_actor/kqp_run_script_actor_ut.cpp -) -set_property( - TARGET - ydb-core-kqp-run_script_actor-ut - PROPERTY - SPLIT_FACTOR - 50 -) -add_yunittest( - NAME - ydb-core-kqp-run_script_actor-ut - TEST_TARGET - ydb-core-kqp-run_script_actor-ut - TEST_ARG - --print-before-suite - --print-before-test - --fork-tests - --print-times - --show-fails -) -set_yunittest_property( - TEST - ydb-core-kqp-run_script_actor-ut - PROPERTY - LABELS - MEDIUM -) -set_yunittest_property( - TEST - ydb-core-kqp-run_script_actor-ut - PROPERTY - PROCESSORS - 1 -) -target_allocator(ydb-core-kqp-run_script_actor-ut - cpp-malloc-jemalloc -) -vcs_info(ydb-core-kqp-run_script_actor-ut) diff --git a/ydb/core/kqp/run_script_actor/ut/CMakeLists.linux-x86_64.txt b/ydb/core/kqp/run_script_actor/ut/CMakeLists.linux-x86_64.txt deleted file mode 100644 index d20b2bde7e3..00000000000 --- a/ydb/core/kqp/run_script_actor/ut/CMakeLists.linux-x86_64.txt +++ /dev/null @@ -1,82 +0,0 @@ - -# This file was generated by the build system used internally in the Yandex monorepo. -# Only simple modifications are allowed (adding source-files to targets, adding simple properties -# like target_include_directories). These modifications will be ported to original -# ya.make files by maintainers. Any complex modifications which can't be ported back to the -# original buildsystem will not be accepted. - - - -add_executable(ydb-core-kqp-run_script_actor-ut) -target_compile_options(ydb-core-kqp-run_script_actor-ut PRIVATE - -DUSE_CURRENT_UDF_ABI_VERSION -) -target_include_directories(ydb-core-kqp-run_script_actor-ut PRIVATE - ${CMAKE_SOURCE_DIR}/ydb/core/kqp/run_script_actor -) -target_link_libraries(ydb-core-kqp-run_script_actor-ut PUBLIC - contrib-libs-linux-headers - contrib-libs-cxxsupp - yutil - library-cpp-cpuid_check - cpp-testing-unittest_main - core-kqp-run_script_actor - cpp-threading-local_executor - ydb-core-kqp - kqp-ut-common - yql-sql-pg - yql-parser-pg_wrapper - cpp-client-ydb_operation - client-ydb_types-operation -) -target_link_options(ydb-core-kqp-run_script_actor-ut PRIVATE - -ldl - -lrt - -Wl,--no-as-needed - -fPIC - -fPIC - -lpthread - -lrt - -ldl -) -target_sources(ydb-core-kqp-run_script_actor-ut PRIVATE - ${CMAKE_SOURCE_DIR}/ydb/core/kqp/run_script_actor/kqp_run_script_actor_ut.cpp -) -set_property( - TARGET - ydb-core-kqp-run_script_actor-ut - PROPERTY - SPLIT_FACTOR - 50 -) -add_yunittest( - NAME - ydb-core-kqp-run_script_actor-ut - TEST_TARGET - ydb-core-kqp-run_script_actor-ut - TEST_ARG - --print-before-suite - --print-before-test - --fork-tests - --print-times - --show-fails -) -set_yunittest_property( - TEST - ydb-core-kqp-run_script_actor-ut - PROPERTY - LABELS - MEDIUM -) -set_yunittest_property( - TEST - ydb-core-kqp-run_script_actor-ut - PROPERTY - PROCESSORS - 1 -) -target_allocator(ydb-core-kqp-run_script_actor-ut - cpp-malloc-tcmalloc - libs-tcmalloc-no_percpu_cache -) -vcs_info(ydb-core-kqp-run_script_actor-ut) diff --git a/ydb/core/kqp/run_script_actor/ut/CMakeLists.txt b/ydb/core/kqp/run_script_actor/ut/CMakeLists.txt deleted file mode 100644 index f8b31df0c11..00000000000 --- a/ydb/core/kqp/run_script_actor/ut/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ - -# This file was generated by the build system used internally in the Yandex monorepo. -# Only simple modifications are allowed (adding source-files to targets, adding simple properties -# like target_include_directories). These modifications will be ported to original -# ya.make files by maintainers. Any complex modifications which can't be ported back to the -# original buildsystem will not be accepted. - - -if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64" AND NOT HAVE_CUDA) - include(CMakeLists.linux-aarch64.txt) -elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") - include(CMakeLists.darwin-x86_64.txt) -elseif (WIN32 AND CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64" AND NOT HAVE_CUDA) - include(CMakeLists.windows-x86_64.txt) -elseif (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" AND NOT HAVE_CUDA) - include(CMakeLists.linux-x86_64.txt) -endif() diff --git a/ydb/core/kqp/run_script_actor/ut/CMakeLists.windows-x86_64.txt b/ydb/core/kqp/run_script_actor/ut/CMakeLists.windows-x86_64.txt deleted file mode 100644 index ade7244716e..00000000000 --- a/ydb/core/kqp/run_script_actor/ut/CMakeLists.windows-x86_64.txt +++ /dev/null @@ -1,70 +0,0 @@ - -# This file was generated by the build system used internally in the Yandex monorepo. -# Only simple modifications are allowed (adding source-files to targets, adding simple properties -# like target_include_directories). These modifications will be ported to original -# ya.make files by maintainers. Any complex modifications which can't be ported back to the -# original buildsystem will not be accepted. - - - -add_executable(ydb-core-kqp-run_script_actor-ut) -target_compile_options(ydb-core-kqp-run_script_actor-ut PRIVATE - -DUSE_CURRENT_UDF_ABI_VERSION -) -target_include_directories(ydb-core-kqp-run_script_actor-ut PRIVATE - ${CMAKE_SOURCE_DIR}/ydb/core/kqp/run_script_actor -) -target_link_libraries(ydb-core-kqp-run_script_actor-ut PUBLIC - contrib-libs-cxxsupp - yutil - library-cpp-cpuid_check - cpp-testing-unittest_main - core-kqp-run_script_actor - cpp-threading-local_executor - ydb-core-kqp - kqp-ut-common - yql-sql-pg - yql-parser-pg_wrapper - cpp-client-ydb_operation - client-ydb_types-operation -) -target_sources(ydb-core-kqp-run_script_actor-ut PRIVATE - ${CMAKE_SOURCE_DIR}/ydb/core/kqp/run_script_actor/kqp_run_script_actor_ut.cpp -) -set_property( - TARGET - ydb-core-kqp-run_script_actor-ut - PROPERTY - SPLIT_FACTOR - 50 -) -add_yunittest( - NAME - ydb-core-kqp-run_script_actor-ut - TEST_TARGET - ydb-core-kqp-run_script_actor-ut - TEST_ARG - --print-before-suite - --print-before-test - --fork-tests - --print-times - --show-fails -) -set_yunittest_property( - TEST - ydb-core-kqp-run_script_actor-ut - PROPERTY - LABELS - MEDIUM -) -set_yunittest_property( - TEST - ydb-core-kqp-run_script_actor-ut - PROPERTY - PROCESSORS - 1 -) -target_allocator(ydb-core-kqp-run_script_actor-ut - system_allocator -) -vcs_info(ydb-core-kqp-run_script_actor-ut) diff --git a/ydb/core/kqp/run_script_actor/ut/ya.make b/ydb/core/kqp/run_script_actor/ut/ya.make deleted file mode 100644 index 35dc226aebe..00000000000 --- a/ydb/core/kqp/run_script_actor/ut/ya.make +++ /dev/null @@ -1,24 +0,0 @@ -UNITTEST_FOR(ydb/core/kqp/run_script_actor) - -FORK_SUBTESTS() -SPLIT_FACTOR(50) - -SIZE(MEDIUM) - -SRCS( - kqp_run_script_actor_ut.cpp -) - -PEERDIR( - library/cpp/threading/local_executor - ydb/core/kqp - ydb/core/kqp/ut/common - ydb/library/yql/sql/pg - ydb/library/yql/parser/pg_wrapper - ydb/public/sdk/cpp/client/ydb_operation - ydb/public/sdk/cpp/client/ydb_types/operation -) - -YQL_LAST_ABI_VERSION() - -END() diff --git a/ydb/core/kqp/run_script_actor/ya.make b/ydb/core/kqp/run_script_actor/ya.make index 5ca4b2184fc..46d6a0567db 100644 --- a/ydb/core/kqp/run_script_actor/ya.make +++ b/ydb/core/kqp/run_script_actor/ya.make @@ -17,7 +17,3 @@ PEERDIR( YQL_LAST_ABI_VERSION() END() - -RECURSE_FOR_TESTS( - ut -) |