Skip to content

Commit 90ae575

Browse files
authored
Always add 'u-' prefix to the dedicated YDB database endpoint during resolving (#4688)
1 parent 4b411f4 commit 90ae575

File tree

2 files changed

+37
-9
lines changed

2 files changed

+37
-9
lines changed

ydb/core/fq/libs/actors/database_resolver.cpp

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -311,10 +311,20 @@ class TDatabaseResolver: public TActor<TDatabaseResolver>
311311
Y_ENSURE(endpoint);
312312

313313
TVector<TString> split = StringSplitter(endpoint).Split(':');
314-
315314
Y_ENSURE(split.size() == 2);
316315

317-
return TDatabaseDescription{endpoint, split[0], FromString(split[1]), database, secure};
316+
TString host = std::move(split[0]);
317+
ui32 port = FromString(split[1]);
318+
319+
// There are two kinds of managed YDBs: serverless and dedicated.
320+
// While working with dedicated databases, we have to use underlay network.
321+
// That's why we add `u-` prefix to database fqdn.
322+
if (databaseInfo.GetMap().contains("dedicatedDatabase")) {
323+
endpoint = "u-" + endpoint;
324+
host = "u-" + host;
325+
}
326+
327+
return TDatabaseDescription{endpoint, std::move(host), port, database, secure};
318328
};
319329
Parsers[NYql::EDatabaseType::Ydb] = ydbParser;
320330
Parsers[NYql::EDatabaseType::DataStreams] = [ydbParser](
@@ -323,18 +333,14 @@ class TDatabaseResolver: public TActor<TDatabaseResolver>
323333
bool useTls,
324334
NConnector::NApi::EProtocol protocol)
325335
{
326-
bool isDedicatedDb = databaseInfo.GetMap().contains("storageConfig");
327336
auto ret = ydbParser(databaseInfo, mdbEndpointGenerator, useTls, protocol);
328337
// TODO: Take explicit field from MVP
338+
bool isDedicatedDb = databaseInfo.GetMap().contains("dedicatedDatabase");
329339
if (!isDedicatedDb && ret.Endpoint.StartsWith("ydb.")) {
330340
// Replace "ydb." -> "yds."
331341
ret.Endpoint[2] = 's';
332342
ret.Host[2] = 's';
333343
}
334-
if (isDedicatedDb) {
335-
ret.Endpoint = "u-" + ret.Endpoint;
336-
ret.Host = "u-" + ret.Host;
337-
}
338344
return ret;
339345
};
340346
Parsers[NYql::EDatabaseType::ClickHouse] = [](

ydb/core/fq/libs/actors/ut/database_resolver_ut.cpp

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ struct TTestBootstrap : public TTestActorRuntime {
6666
void CheckEqual(
6767
const NHttp::TEvHttpProxy::TEvHttpOutgoingRequest& lhs,
6868
const NHttp::TEvHttpProxy::TEvHttpOutgoingRequest& rhs) {
69-
UNIT_ASSERT_EQUAL(lhs.Request->URL, rhs.Request->URL);
69+
UNIT_ASSERT_EQUAL_C(lhs.Request->URL, rhs.Request->URL, "Compare: " << lhs.Request->URL << " " << rhs.Request->URL);
7070
}
7171

7272
void CheckEqual(
@@ -234,6 +234,28 @@ Y_UNIT_TEST_SUITE(TDatabaseResolverTests) {
234234
);
235235
}
236236

237+
Y_UNIT_TEST(Ydb_Dedicated) {
238+
Test(
239+
NYql::EDatabaseType::Ydb,
240+
NYql::NConnector::NApi::EProtocol::PROTOCOL_UNSPECIFIED,
241+
"https://ydbc.ydb.cloud.yandex.net:8789/ydbc/cloud-prod/database?databaseId=etn021us5r9rhld1vgbh",
242+
"200",
243+
R"(
244+
{
245+
"endpoint":"grpcs://lb.etnbrtlini51k7cinbdr.ydb.mdb.yandexcloud.net:2135/?database=/ru-central1/b1gtl2kg13him37quoo6/etn021us5r9rhld1vgbh",
246+
"dedicatedDatabase":{"resuorcePresetId": "medium"}
247+
})",
248+
NYql::TDatabaseResolverResponse::TDatabaseDescription{
249+
TString{"u-lb.etnbrtlini51k7cinbdr.ydb.mdb.yandexcloud.net:2135"},
250+
TString{"u-lb.etnbrtlini51k7cinbdr.ydb.mdb.yandexcloud.net"},
251+
2135,
252+
TString("/ru-central1/b1gtl2kg13him37quoo6/etn021us5r9rhld1vgbh"),
253+
true
254+
},
255+
{}
256+
);
257+
}
258+
237259
Y_UNIT_TEST(DataStreams_Serverless) {
238260
Test(
239261
NYql::EDatabaseType::DataStreams,
@@ -264,7 +286,7 @@ Y_UNIT_TEST_SUITE(TDatabaseResolverTests) {
264286
R"(
265287
{
266288
"endpoint":"grpcs://lb.etn021us5r9rhld1vgbh.ydb.mdb.yandexcloud.net:2135/?database=/ru-central1/b1g7jdjqd07qg43c4fmp/etn021us5r9rhld1vgbh",
267-
"storageConfig":{"storageSizeLimit":107374182400}
289+
"dedicatedDatabase":{"resourcePresetId": "medium"}
268290
})",
269291
NYql::TDatabaseResolverResponse::TDatabaseDescription{
270292
TString{"u-lb.etn021us5r9rhld1vgbh.ydb.mdb.yandexcloud.net:2135"},

0 commit comments

Comments
 (0)