Skip to content

Commit 34ca76d

Browse files
authored
YQ-3557 tests preparation before resource pool enable (#7818)
1 parent 93998b8 commit 34ca76d

File tree

12 files changed

+88
-36
lines changed

12 files changed

+88
-36
lines changed

ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6496,7 +6496,13 @@ Y_UNIT_TEST_SUITE(KqpScheme) {
64966496
}
64976497

64986498
Y_UNIT_TEST(DisableResourcePools) {
6499-
TKikimrRunner kikimr(TKikimrSettings().SetEnableResourcePools(false));
6499+
NKikimrConfig::TAppConfig config;
6500+
config.MutableFeatureFlags()->SetEnableResourcePools(false);
6501+
6502+
TKikimrRunner kikimr(NKqp::TKikimrSettings()
6503+
.SetAppConfig(config)
6504+
.SetEnableResourcePools(false));
6505+
65006506
auto db = kikimr.GetTableClient();
65016507
auto session = db.CreateSession().GetValueSync().GetSession();
65026508

ydb/core/kqp/workload_service/actors/scheme_actors.cpp

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ class TPoolFetcherActor : public TSchemeActorBase<TPoolFetcherActor> {
180180
LOG_D("Start pool fetching");
181181
auto event = NTableCreator::BuildSchemeCacheNavigateRequest(
182182
{{".metadata/workload_manager/pools", PoolId}},
183-
Database,
183+
Database ? Database : AppData()->TenantName,
184184
UserToken
185185
);
186186
event->ResultSet[0].Access |= NACLib::SelectRow;
@@ -326,7 +326,7 @@ class TPoolCreatorActor : public TSchemeActorBase<TPoolCreatorActor> {
326326
auto event = std::make_unique<TEvTxUserProxy::TEvProposeTransaction>();
327327

328328
auto& schemeTx = *event->Record.MutableTransaction()->MutableModifyScheme();
329-
schemeTx.SetWorkingDir(JoinPath({Database, ".metadata/workload_manager/pools"}));
329+
schemeTx.SetWorkingDir(JoinPath({Database ? Database : AppData()->TenantName, ".metadata/workload_manager/pools"}));
330330
schemeTx.SetOperationType(NKikimrSchemeOp::ESchemeOpCreateResourcePool);
331331
schemeTx.SetInternal(true);
332332

@@ -483,7 +483,13 @@ class TDatabaseFetcherActor : public TSchemeActorBase<TDatabaseFetcherActor> {
483483
}
484484
return;
485485
case EStatus::Ok:
486-
Serverless = result.DomainInfo && result.DomainInfo->IsServerless();
486+
if (result.DomainInfo) {
487+
Serverless = result.DomainInfo->IsServerless();
488+
if (result.Self->Info.GetPathId() != result.DomainInfo->DomainKey.LocalPathId) {
489+
Reply(Ydb::StatusIds::UNSUPPORTED, TStringBuilder() << "Invalid database " << Database << ", domain path id is different");
490+
return;
491+
}
492+
}
487493
Reply(Ydb::StatusIds::SUCCESS);
488494
return;
489495
}
@@ -500,7 +506,11 @@ class TDatabaseFetcherActor : public TSchemeActorBase<TDatabaseFetcherActor> {
500506
protected:
501507
void StartRequest() override {
502508
LOG_D("Start database fetching");
503-
auto event = NTableCreator::BuildSchemeCacheNavigateRequest({{}}, Database, UserToken);
509+
auto event = NTableCreator::BuildSchemeCacheNavigateRequest(
510+
{{}},
511+
Database ? Database : AppData()->TenantName,
512+
UserToken
513+
);
504514
event->ResultSet[0].Operation = NSchemeCache::TSchemeCacheNavigate::OpPath;
505515
event->ResultSet[0].Access |= CheckAccess;
506516
Send(MakeSchemeCacheID(), new TEvTxProxySchemeCache::TEvNavigateKeySet(event.Release()), IEventHandle::FlagTrackDelivery);

ydb/core/kqp/workload_service/kqp_workload_service_impl.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ struct TDatabaseState {
2222
std::unordered_map<TString, std::unordered_set<TActorId>> PendingSubscriptions = {};
2323
bool HasDefaultPool = false;
2424
bool Serverless = false;
25+
bool DatabaseUnsupported = false;
2526

2627
TInstant LastUpdateTime = TInstant::Zero();
2728

@@ -41,8 +42,10 @@ struct TDatabaseState {
4142

4243
if (!EnabledResourcePoolsOnServerless && (TInstant::Now() - LastUpdateTime) > IDLE_DURATION) {
4344
ActorContext.Register(CreateDatabaseFetcherActor(ActorContext.SelfID, database));
44-
} else {
45+
} else if (!DatabaseUnsupported) {
4546
StartPendingRequests();
47+
} else {
48+
ReplyContinueError(Ydb::StatusIds::UNSUPPORTED, {NYql::TIssue(TStringBuilder() << "Unsupported database: " << database)});
4649
}
4750
}
4851

@@ -65,6 +68,7 @@ struct TDatabaseState {
6568
}
6669

6770
void UpdateDatabaseInfo(const TEvPrivate::TEvFetchDatabaseResponse::TPtr& ev) {
71+
DatabaseUnsupported = ev->Get()->Status == Ydb::StatusIds::UNSUPPORTED;
6872
if (ev->Get()->Status != Ydb::StatusIds::SUCCESS) {
6973
ReplyContinueError(ev->Get()->Status, GroupIssues(ev->Get()->Issues, "Failed to fetch database info"));
7074
return;

ydb/core/memory_controller/memory_controller_ut.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,6 @@ Y_UNIT_TEST(SharedCache) {
262262

263263
server->PrintCounters();
264264
UNIT_ASSERT_VALUES_EQUAL(server->SharedPageCacheCounters->ConfigLimitBytes->Val(), 32_MB);
265-
UNIT_ASSERT_VALUES_EQUAL(server->SharedPageCacheCounters->MemLimitBytes->Val(), 0); // not applied yet
266265
UNIT_ASSERT_VALUES_EQUAL(server->SharedPageCacheCounters->ActiveLimitBytes->Val(), server->SharedPageCacheCounters->ConfigLimitBytes->Val());
267266

268267
runtime.SimulateSleep(TDuration::Seconds(2));

ydb/core/sys_view/pg_tables/pg_tables.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,13 @@ void TPgTablesScanBase::Handle(NSchemeShard::TEvSchemeShard::TEvDescribeSchemeRe
125125
ExpandBatchWithStaticTables(batch);
126126

127127
for (size_t i = 0; i < record.GetPathDescription().ChildrenSize(); ++i) {
128+
const auto& childrenDescription = record.GetPathDescription().GetChildren(i);
129+
if (childrenDescription.GetPathType() == NKikimrSchemeOp::EPathTypeDir) {
130+
continue;
131+
}
132+
128133
TVector<TString> cellData;
129-
const auto& tableName = record.GetPathDescription().GetChildren(i).GetName();
134+
const auto& tableName = childrenDescription.GetName();
130135
const auto& tableOwner = record.GetPathDescription().GetSelf().GetOwner();
131136
TVector<TCell> cells = MakePgTablesRow(tableName, tableOwner, cellData);
132137
if (!ConvertError_.Empty()) {

ydb/core/sys_view/ut_common.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,16 @@ TTestEnv::TTestEnv(ui32 staticNodes, ui32 dynamicNodes, ui32 storagePools, ui32
4343
// in some tests we check data size, which depends on compaction,
4444
NKikimrConfig::TFeatureFlags featureFlags;
4545
featureFlags.SetEnableBackgroundCompaction(false);
46+
featureFlags.SetEnableResourcePools(true);
4647
Settings->SetFeatureFlags(featureFlags);
4748

4849
Settings->SetEnablePersistentQueryStats(enableSVP);
4950
Settings->SetEnableDbCounters(enableSVP);
5051

52+
NKikimrConfig::TAppConfig appConfig;
53+
*appConfig.MutableFeatureFlags() = Settings->FeatureFlags;
54+
Settings->SetAppConfig(appConfig);
55+
5156
for (ui32 i : xrange(storagePools)) {
5257
TString poolName = Sprintf("test%d", i);
5358
Settings->AddStoragePool(poolName, TString("/Root:") + poolName, 2);

ydb/core/sys_view/ut_kqp.cpp

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ Y_UNIT_TEST_SUITE(SystemView) {
256256
UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString());
257257

258258
NKqp::CompareYson(R"([
259-
[[5u];[0u];["/Root/Tenant1/Table1"]]
259+
[[9u];[0u];["/Root/Tenant1/Table1"]]
260260
])", NKqp::StreamResultToYson(it));
261261
}
262262
{
@@ -267,7 +267,7 @@ Y_UNIT_TEST_SUITE(SystemView) {
267267
UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString());
268268

269269
NKqp::CompareYson(R"([
270-
[[6u];[0u];["/Root/Tenant2/Table2"]]
270+
[[10u];[0u];["/Root/Tenant2/Table2"]]
271271
])", NKqp::StreamResultToYson(it));
272272
}
273273
}
@@ -297,7 +297,7 @@ Y_UNIT_TEST_SUITE(SystemView) {
297297

298298
UNIT_ASSERT(result.IsSuccess());
299299
NKqp::CompareYson(R"([
300-
[[5u];[0u];["/Root/Tenant1/Table1"]]
300+
[[9u];[0u];["/Root/Tenant1/Table1"]]
301301
])", FormatResultSetYson(result.GetResultSet(0)));
302302
}
303303
{
@@ -307,7 +307,7 @@ Y_UNIT_TEST_SUITE(SystemView) {
307307

308308
UNIT_ASSERT(result.IsSuccess());
309309
NKqp::CompareYson(R"([
310-
[[6u];[0u];["/Root/Tenant2/Table2"]]
310+
[[10u];[0u];["/Root/Tenant2/Table2"]]
311311
])", FormatResultSetYson(result.GetResultSet(0)));
312312
}
313313
}
@@ -1521,11 +1521,12 @@ Y_UNIT_TEST_SUITE(SystemView) {
15211521
UNIT_ASSERT_VALUES_EQUAL(entry.Type, ESchemeEntryType::Directory);
15221522

15231523
auto children = result.GetChildren();
1524-
UNIT_ASSERT_VALUES_EQUAL(children.size(), 4);
1525-
UNIT_ASSERT_STRINGS_EQUAL(children[0].Name, "Table0");
1526-
UNIT_ASSERT_STRINGS_EQUAL(children[1].Name, "Tenant1");
1527-
UNIT_ASSERT_STRINGS_EQUAL(children[2].Name, "Tenant2");
1528-
UNIT_ASSERT_STRINGS_EQUAL(children[3].Name, ".sys");
1524+
UNIT_ASSERT_VALUES_EQUAL(children.size(), 5);
1525+
UNIT_ASSERT_STRINGS_EQUAL(children[0].Name, ".metadata");
1526+
UNIT_ASSERT_STRINGS_EQUAL(children[1].Name, "Table0");
1527+
UNIT_ASSERT_STRINGS_EQUAL(children[2].Name, "Tenant1");
1528+
UNIT_ASSERT_STRINGS_EQUAL(children[3].Name, "Tenant2");
1529+
UNIT_ASSERT_STRINGS_EQUAL(children[4].Name, ".sys");
15291530
}
15301531
{
15311532
auto result = schemeClient.ListDirectory("/Root/Tenant1").GetValueSync();

ydb/core/tx/datashard/datashard_ut_change_exchange.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3081,10 +3081,17 @@ Y_UNIT_TEST_SUITE(Cdc) {
30813081
}
30823082

30833083
Y_UNIT_TEST(EnqueueRequestProcessSend) {
3084+
// Disable workload manager because it's also used events from ES_PRIVATE
3085+
// which squash with event NChangeExchange::TEvChangeExchangePrivate::EvReady in test
3086+
NKikimrConfig::TAppConfig config;
3087+
config.MutableFeatureFlags()->SetEnableResourcePools(false);
3088+
30843089
TPortManager portManager;
30853090
TServer::TPtr server = new TServer(TServerSettings(portManager.GetPort(2134), {}, DefaultPQConfig())
30863091
.SetUseRealThreads(false)
30873092
.SetDomainName("Root")
3093+
.SetEnableResourcePools(false)
3094+
.SetAppConfig(config)
30883095
);
30893096

30903097
auto& runtime = *server->GetRuntime();

ydb/core/tx/datashard/datashard_ut_kqp_errors.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,15 @@ bool HasIssue(const TIssues& issues, ui32 code, TStringBuf message, std::functio
3434

3535
class TLocalFixture {
3636
public:
37-
TLocalFixture() {
37+
TLocalFixture(bool enableResourcePools = true) {
3838
TPortManager pm;
3939
NKikimrConfig::TAppConfig app;
40+
app.MutableFeatureFlags()->SetEnableResourcePools(enableResourcePools);
4041
TServerSettings serverSettings(pm.GetPort(2134));
4142
serverSettings.SetDomainName("Root")
4243
.SetNodeCount(2)
4344
.SetUseRealThreads(false)
45+
.SetEnableResourcePools(enableResourcePools)
4446
.SetAppConfig(app);
4547

4648
Server = new TServer(serverSettings);
@@ -82,7 +84,8 @@ class TLocalFixture {
8284
Y_UNIT_TEST_SUITE(KqpErrors) {
8385

8486
Y_UNIT_TEST(ResolveTableError) {
85-
TLocalFixture fixture;
87+
// Disable resource pool, because workload manager also got TEvNavigateKeySetResult for default pool creation
88+
TLocalFixture fixture(false);
8689
auto mitm = [&](TAutoPtr<IEventHandle> &ev) {
8790
if (ev->GetTypeRewrite() == TEvTxProxySchemeCache::TEvNavigateKeySetResult::EventType) {
8891
auto event = ev.Get()->Get<TEvTxProxySchemeCache::TEvNavigateKeySetResult>();

ydb/core/viewer/viewer_ut.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,11 @@ Y_UNIT_TEST_SUITE(Viewer) {
409409
case TEvTxProxySchemeCache::EvNavigateKeySetResult: {
410410
auto *x = reinterpret_cast<TEvTxProxySchemeCache::TEvNavigateKeySetResult::TPtr*>(&ev);
411411
auto &domain = (*x)->Get()->Request->ResultSet.begin()->DomainInfo;
412-
domain->Params.SetHive(1);
412+
413+
// Event can be generated by workload manager, it is ok for not found response without domain
414+
if (domain) {
415+
domain->Params.SetHive(1);
416+
}
413417
break;
414418
}
415419
case TEvHive::EvResponseHiveDomainStats: {

0 commit comments

Comments
 (0)