aboutsummaryrefslogtreecommitdiffstats
path: root/library
diff options
context:
space:
mode:
authorAlexander Rutkovsky <alexvru@mail.ru>2022-02-09 11:29:21 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 15:58:17 +0300
commit01ba7196442746b0bd0dc5b2ca128ee73eeb25b7 (patch)
treeac3f6bf6a4de67b1ce688cf843341f94f8911792 /library
parent03edfd7d466b46b7989ef84c5b4e352f797365dd (diff)
downloadydb-01ba7196442746b0bd0dc5b2ca128ee73eeb25b7.tar.gz
Fix node registration KIKIMR-14249
ref:c452723dadc27a556b512e47460d3c407a8bdbdb
Diffstat (limited to 'library')
-rw-r--r--library/cpp/actors/core/interconnect.cpp21
-rw-r--r--library/cpp/actors/core/interconnect.h7
2 files changed, 18 insertions, 10 deletions
diff --git a/library/cpp/actors/core/interconnect.cpp b/library/cpp/actors/core/interconnect.cpp
index 9fb33413b2..a42278e669 100644
--- a/library/cpp/actors/core/interconnect.cpp
+++ b/library/cpp/actors/core/interconnect.cpp
@@ -31,18 +31,19 @@ namespace NActors {
temp.ClearRackNum();
temp.ClearBodyNum();
- // legacy format must not interfere with new one
const NProtoBuf::Reflection *reflection = temp.GetReflection();
- for (int i = 0, count = descriptor->field_count(); i < count; ++i) {
- Y_VERIFY(!reflection->HasField(temp, descriptor->field(i)));
+ bool fieldsFromNewFormat = false;
+ for (int i = 0, count = descriptor->field_count(); !fieldsFromNewFormat && i < count; ++i) {
+ fieldsFromNewFormat |= reflection->HasField(temp, descriptor->field(i));
+ }
+ if (!fieldsFromNewFormat) {
+ const auto& v = LegacyValue->DataCenter;
+ const char *p = reinterpret_cast<const char*>(&v);
+ temp.SetDataCenter(TString(p, strnlen(p, sizeof(ui32))));
+ temp.SetModule(::ToString(LegacyValue->Room));
+ temp.SetRack(::ToString(LegacyValue->Rack));
+ temp.SetUnit(::ToString(LegacyValue->Body));
}
-
- const auto& v = LegacyValue->DataCenter;
- const char *p = reinterpret_cast<const char*>(&v);
- temp.SetDataCenter(TString(p, strnlen(p, sizeof(ui32))));
- temp.SetModule(::ToString(LegacyValue->Room));
- temp.SetRack(::ToString(LegacyValue->Rack));
- temp.SetUnit(::ToString(LegacyValue->Body));
}
auto makeString = [&] {
diff --git a/library/cpp/actors/core/interconnect.h b/library/cpp/actors/core/interconnect.h
index 8d1cbd1e77..679a4b8cc6 100644
--- a/library/cpp/actors/core/interconnect.h
+++ b/library/cpp/actors/core/interconnect.h
@@ -39,6 +39,13 @@ namespace NActors {
}
friend bool operator ==(const TLegacyValue& x, const TLegacyValue& y) { return x.Compare(y) == 0; }
+
+ void Serialize(NActorsInterconnect::TNodeLocation *pb) const {
+ pb->SetDataCenterNum(DataCenter);
+ pb->SetRoomNum(Room);
+ pb->SetRackNum(Rack);
+ pb->SetBodyNum(Body);
+ }
};
private: