Skip to content

Commit bf9be3d

Browse files
authored
Add discovery mutator for underlay (#566)
* Add discovery mutator for underlay * Fix prefix * TString -> StringBuf
1 parent 6f4d67d commit bf9be3d

File tree

2 files changed

+27
-2
lines changed

2 files changed

+27
-2
lines changed

ydb/core/fq/libs/shared_resources/shared_resources.cpp

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
#include "shared_resources.h"
22

3-
#include <ydb/library/services/services.pb.h>
43
#include <ydb/core/fq/libs/events/events.h>
4+
#include <ydb/library/actors/core/actorsystem.h>
55
#include <ydb/library/logger/actor.h>
6+
#include <ydb/library/services/services.pb.h>
67

7-
#include <ydb/library/actors/core/actorsystem.h>
8+
#include <ydb/public/api/protos/ydb_discovery.pb.h>
9+
#include <ydb/public/sdk/cpp/client/extensions/discovery_mutator/discovery_mutator.h>
810

911
#include <util/generic/cast.h>
1012
#include <util/generic/strbuf.h>
@@ -33,6 +35,7 @@ struct TYqSharedResourcesImpl : public TActorSystemPtrMixin, public TYqSharedRes
3335
: TYqSharedResources(NYdb::TDriver(GetYdbDriverConfig(config.GetCommon().GetYdbDriverConfig())))
3436
{
3537
CreateDbPoolHolder(PrepareDbPoolConfig(config), credentialsProviderFactory, counters);
38+
AddUnderlayDiscoveryMutator();
3639
}
3740

3841
NDbPool::TConfig PrepareDbPoolConfig(const NFq::NConfig::TConfig& config) {
@@ -81,6 +84,27 @@ struct TYqSharedResourcesImpl : public TActorSystemPtrMixin, public TYqSharedRes
8184
const ::NMonitoring::TDynamicCounterPtr& counters) {
8285
DbPoolHolder = MakeIntrusive<NDbPool::TDbPoolHolder>(config, CoreYdbDriver, credentialsProviderFactory, counters);
8386
}
87+
88+
void AddUnderlayDiscoveryMutator() {
89+
90+
auto mutator = [](Ydb::Discovery::ListEndpointsResult* proto, NYdb::TStatus status, const NYdb::IDiscoveryMutatorApi::TAuxInfo& aux) {
91+
TStringBuf underlayPrefix{"u-"};
92+
if (!aux.DiscoveryEndpoint.starts_with(underlayPrefix) || !proto) {
93+
return status;
94+
}
95+
96+
for (size_t i = 0; i < proto->endpointsSize(); ++i) {
97+
Ydb::Discovery::EndpointInfo* endpointInfo = proto->Mutableendpoints(i);
98+
const TString& address = endpointInfo->address();
99+
if (address.StartsWith(underlayPrefix)) {
100+
continue;
101+
}
102+
endpointInfo->set_address(underlayPrefix + address);
103+
}
104+
return status;
105+
};
106+
UserSpaceYdbDriver.AddExtension<NDiscoveryMutator::TDiscoveryMutator>(NDiscoveryMutator::TDiscoveryMutator::TParams(std::move(mutator)));
107+
}
84108
};
85109

86110
} // namespace

ydb/core/fq/libs/shared_resources/ya.make

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ PEERDIR(
2121
ydb/library/logger
2222
ydb/library/security
2323
ydb/public/sdk/cpp/client/ydb_driver
24+
ydb/public/sdk/cpp/client/ydb_extension
2425
ydb/public/sdk/cpp/client/ydb_table
2526
)
2627

0 commit comments

Comments
 (0)