diff options
author | Alexander Rutkovsky <alexvru@mail.ru> | 2022-02-09 11:29:21 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 15:58:17 +0300 |
commit | 01ba7196442746b0bd0dc5b2ca128ee73eeb25b7 (patch) | |
tree | ac3f6bf6a4de67b1ce688cf843341f94f8911792 /library | |
parent | 03edfd7d466b46b7989ef84c5b4e352f797365dd (diff) | |
download | ydb-01ba7196442746b0bd0dc5b2ca128ee73eeb25b7.tar.gz |
Fix node registration KIKIMR-14249
ref:c452723dadc27a556b512e47460d3c407a8bdbdb
Diffstat (limited to 'library')
-rw-r--r-- | library/cpp/actors/core/interconnect.cpp | 21 | ||||
-rw-r--r-- | library/cpp/actors/core/interconnect.h | 7 |
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: |