summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ydb/core/kqp/ut/indexes/kqp_indexes_ut.cpp30
1 files changed, 16 insertions, 14 deletions
diff --git a/ydb/core/kqp/ut/indexes/kqp_indexes_ut.cpp b/ydb/core/kqp/ut/indexes/kqp_indexes_ut.cpp
index 5b35c069bc0..203883b90d6 100644
--- a/ydb/core/kqp/ut/indexes/kqp_indexes_ut.cpp
+++ b/ydb/core/kqp/ut/indexes/kqp_indexes_ut.cpp
@@ -6122,24 +6122,20 @@ R"([[#;#;["Primary1"];[41u]];[["Secondary2"];[2u];["Primary2"];[42u]];[["Seconda
TVector<TAutoPtr<IEventHandle>> capturedEvents;
int captured = 0;
- NThreading::TPromise<void> eventPromise = NThreading::NewPromise<void>();
- NThreading::TFuture<void> eventFuture = eventPromise.GetFuture();
runtime->SetObserverFunc([&](TAutoPtr<IEventHandle>& event) -> NActors::TTestActorRuntimeBase::EEventAction {
if (captured < toCapture && condition(event)) {
captured++;
capturedEvents.push_back(event.Release());
- if (captured >= toCapture) {
- eventPromise.SetValue();
- }
return NActors::TTestActorRuntimeBase::EEventAction::DROP;
}
return NActors::TTestActorRuntimeBase::EEventAction::PROCESS;
});
+ NYdb::NQuery::TAsyncExecuteQueryResult addIndexFuture;
+ auto queryClient = kikimr.GetQueryClient();
+
kikimr.RunCall([&]
{
- auto queryClient = kikimr.GetQueryClient();
-
{
// Create table
auto result = queryClient.ExecuteQuery(R"(
@@ -6161,13 +6157,16 @@ R"([[#;#;["Primary1"];[41u]];[["Secondary2"];[2u];["Primary2"];[42u]];[["Seconda
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
}
- NYdb::NQuery::TAsyncExecuteQueryResult addIndexFuture = queryClient.ExecuteQuery(R"sql(
+ addIndexFuture = queryClient.ExecuteQuery(R"sql(
ALTER TABLE `/Root/TestOnlineUniq`
ADD INDEX idx_uniq GLOBAL UNIQUE ON (uniq)
)sql", NYdb::NQuery::TTxControl::NoTx());
+ });
- eventFuture.Wait();
+ runtime->WaitFor("Paused index build", [&] { return captured >= toCapture; });
+ kikimr.RunCall([&]
+ {
// Insert a normal row
{
auto result = queryClient.ExecuteQuery(R"(
@@ -6184,13 +6183,16 @@ R"([[#;#;["Primary1"];[41u]];[["Secondary2"];[2u];["Primary2"];[42u]];[["Seconda
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(),
expectInsertOk ? EStatus::SUCCESS : EStatus::PRECONDITION_FAILED, result.GetIssues().ToString());
}
+ });
- // Unblock and let index build fail if insertion succeeds
- for (auto& ev: capturedEvents) {
- runtime->Send(ev.Release());
- }
- capturedEvents.clear();
+ // Unblock and let index build fail if insertion succeeds
+ for (auto& ev: capturedEvents) {
+ runtime->Send(ev.Release());
+ }
+ capturedEvents.clear();
+ kikimr.RunCall([&]
+ {
{
auto result = addIndexFuture.GetValueSync();
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(),