Skip to content

Commit f0e6047

Browse files
vporyadkeCyberROFL
andauthored
more correct way to check for bridge mode in local & hive (#20210)
Co-authored-by: Ilnaz Nizametdinov <i.nizametdinov@gmail.com>
1 parent 8d26f1b commit f0e6047

File tree

7 files changed

+37
-12
lines changed

7 files changed

+37
-12
lines changed

ydb/core/base/bridge.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#include "bridge.h"
2+
3+
#include <ydb/core/protos/config.pb.h>
4+
5+
namespace NKikimr {
6+
7+
bool IsBridgeMode(const TActorContext &ctx) {
8+
const auto *bridgeConfig = AppData(ctx)->BridgeConfig;
9+
return bridgeConfig && bridgeConfig->PilesSize() > 0;
10+
}
11+
12+
} // NKikimr

ydb/core/base/bridge.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#pragma once
22

3+
#include "appdata_fwd.h"
34
#include "defs.h"
45
#include "blobstorage_common.h"
56

@@ -46,4 +47,6 @@ namespace NKikimr {
4647
}
4748
};
4849

50+
bool IsBridgeMode(const TActorContext &ctx);
51+
4952
} // NKikimr

ydb/core/base/ya.make

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ SRCS(
1111
board_lookup.cpp
1212
board_publish.cpp
1313
board_replica.cpp
14+
bridge.h
15+
bridge.cpp
1416
blobstorage.h
1517
blobstorage.cpp
1618
blobstorage_grouptype.cpp

ydb/core/mind/hive/hive_impl.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -722,7 +722,7 @@ void THive::Cleanup() {
722722
}
723723

724724
void THive::MaybeLoadEverything() {
725-
if (!NodesInfo.empty() && HaveStorageConfig && CurrentStateFunc() == &TThis::StateInit) {
725+
if (!NodesInfo.empty() && (!IsBridgeMode(TActivationContext::AsActorContext()) || BridgeInfo)) {
726726
Execute(CreateLoadEverything());
727727
}
728728
}
@@ -3599,7 +3599,6 @@ void THive::Handle(TEvPrivate::TEvUpdateFollowers::TPtr&) {
35993599
void THive::Handle(TEvNodeWardenStorageConfig::TPtr& ev) {
36003600
BLOG_D("Handle TEvNodeWardenStorageConfig");
36013601
BridgeInfo = ev->Get()->BridgeInfo;
3602-
HaveStorageConfig = true;
36033602
MaybeLoadEverything();
36043603
}
36053604

ydb/core/mind/hive/hive_impl.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,6 @@ class THive : public TActor<THive>, public TTabletExecutedFlat, public THiveShar
397397
i32 MigrationProgress = 0;
398398
NKikimrHive::TEvSeizeTablets MigrationFilter;
399399
TBridgeInfo::TPtr BridgeInfo;
400-
bool HaveStorageConfig = false;
401400

402401
TActorId ResponsivenessActorID;
403402
TTabletResponsivenessPinger *ResponsivenessPinger;

ydb/core/mind/hive/tx__init_scheme.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,10 @@ class TTxInitScheme : public TTransactionBase<THive> {
9797
BLOG_D("THive::TTxInitScheme::Complete");
9898
const TActorId nameserviceId = GetNameserviceActorId();
9999
ctx.Send(nameserviceId, new TEvInterconnect::TEvListNodes());
100-
const TActorId wardenId = MakeBlobStorageNodeWardenID(ctx.SelfID.NodeId());
101-
ctx.Send(wardenId, new TEvNodeWardenQueryStorageConfig(true));
100+
if (IsBridgeMode(ctx)) {
101+
const TActorId wardenId = MakeBlobStorageNodeWardenID(ctx.SelfID.NodeId());
102+
ctx.Send(wardenId, new TEvNodeWardenQueryStorageConfig(true));
103+
}
102104
}
103105
};
104106

ydb/core/mind/local.cpp

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -937,11 +937,13 @@ class TLocalNodeRegistrar : public TActorBootstrapped<TLocalNodeRegistrar> {
937937

938938
void Handle(TEvNodeWardenStorageConfig::TPtr &ev, const TActorContext &ctx) {
939939
auto bridgeInfo = ev->Get()->BridgeInfo;
940-
if (bridgeInfo) {
941-
auto pileInfo = bridgeInfo->SelfNodePile;
942-
if (pileInfo) {
943-
BridgePileId = pileInfo->BridgePileId;
944-
}
940+
if (bridgeInfo == nullptr) {
941+
// There will be an update with bridge info later
942+
return;
943+
}
944+
auto pileInfo = bridgeInfo->SelfNodePile;
945+
if (pileInfo) {
946+
BridgePileId = pileInfo->BridgePileId;
945947
}
946948
TryToRegister(ctx);
947949
if (LastDrainRequest) {
@@ -1005,8 +1007,14 @@ class TLocalNodeRegistrar : public TActorBootstrapped<TLocalNodeRegistrar> {
10051007
LOG_DEBUG(ctx, NKikimrServices::LOCAL, "TLocalNodeRegistrar::Bootstrap");
10061008
StartTime = ctx.Now();
10071009
const TActorId wardenId = MakeBlobStorageNodeWardenID(SelfId().NodeId());
1008-
Send(wardenId, new TEvNodeWardenQueryStorageConfig(true));
1009-
Become(&TThis::StateInit);
1010+
if (IsBridgeMode(ctx)) {
1011+
Send(wardenId, new TEvNodeWardenQueryStorageConfig(true));
1012+
Become(&TThis::StateInit);
1013+
} else {
1014+
TryToRegister(ctx);
1015+
Send(SelfId(), new TEvPrivate::TEvUpdateSystemUsage());
1016+
Become(&TThis::StateWork);
1017+
}
10101018
}
10111019

10121020
STFUNC(StateWork) {

0 commit comments

Comments
 (0)