Skip to content

Commit 087c886

Browse files
authored
Store flag AuthorizeByCertificate to local db of node broker (#11315)
1 parent 5169daa commit 087c886

File tree

4 files changed

+32
-10
lines changed

4 files changed

+32
-10
lines changed

ydb/core/mind/node_broker.cpp

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ void TNodeBroker::AddNode(const TNodeInfo &info)
199199
FreeIds.Reset(info.NodeId);
200200
if (info.SlotIndex.has_value()) {
201201
SlotIndexesPools[info.ServicedSubDomain].Acquire(info.SlotIndex.value());
202-
}
202+
}
203203

204204
if (info.Expire > Epoch.Start) {
205205
LOG_DEBUG_S(TActorContext::AsActorContext(), NKikimrServices::NODE_BROKER,
@@ -564,7 +564,8 @@ void TNodeBroker::DbAddNode(const TNodeInfo &node,
564564
<< " lease=" << node.Lease
565565
<< " expire=" << node.ExpirationString()
566566
<< " servicedsubdomain=" << node.ServicedSubDomain
567-
<< " slotindex= " << node.SlotIndex);
567+
<< " slotindex=" << node.SlotIndex
568+
<< " authorizedbycertificate=" << (node.AuthorizedByCertificate ? "true" : "false"));
568569

569570
NIceDb::TNiceDb db(txc.DB);
570571
using T = Schema::Nodes;
@@ -576,7 +577,8 @@ void TNodeBroker::DbAddNode(const TNodeInfo &node,
576577
.Update<T::Lease>(node.Lease)
577578
.Update<T::Expire>(node.Expire.GetValue())
578579
.Update<T::Location>(node.Location.GetSerializedLocation())
579-
.Update<T::ServicedSubDomain>(node.ServicedSubDomain);
580+
.Update<T::ServicedSubDomain>(node.ServicedSubDomain)
581+
.Update<T::AuthorizedByCertificate>(node.AuthorizedByCertificate);
580582

581583
if (node.SlotIndex.has_value()) {
582584
db.Table<T>().Key(node.NodeId)
@@ -729,7 +731,8 @@ bool TNodeBroker::DbLoadState(TTransactionContext &txc,
729731
info.ServicedSubDomain = TSubDomainKey(nodesRowset.GetValueOrDefault<T::ServicedSubDomain>());
730732
if (nodesRowset.HaveValue<T::SlotIndex>()) {
731733
info.SlotIndex = nodesRowset.GetValue<T::SlotIndex>();
732-
}
734+
}
735+
info.AuthorizedByCertificate = nodesRowset.GetValue<T::AuthorizedByCertificate>();
733736
AddNode(info);
734737

735738
LOG_DEBUG_S(ctx, NKikimrServices::NODE_BROKER,
@@ -843,9 +846,21 @@ void TNodeBroker::DbUpdateNodeLocation(const TNodeInfo &node,
843846
db.Table<T>().Key(node.NodeId).Update<T::Location>(node.Location.GetSerializedLocation());
844847
}
845848

849+
void TNodeBroker::DbUpdateNodeAuthorizedByCertificate(const TNodeInfo &node,
850+
TTransactionContext &txc)
851+
{
852+
LOG_DEBUG_S(TActorContext::AsActorContext(), NKikimrServices::NODE_BROKER,
853+
"Update node " << node.IdString() << " authorizedbycertificate in database"
854+
<< " authorizedbycertificate=" << (node.AuthorizedByCertificate ? "true" : "false"));
855+
856+
NIceDb::TNiceDb db(txc.DB);
857+
using T = Schema::Nodes;
858+
db.Table<T>().Key(node.NodeId).Update<T::AuthorizedByCertificate>(node.AuthorizedByCertificate);
859+
}
860+
846861
void TNodeBroker::Handle(TEvConsole::TEvConfigNotificationRequest::TPtr &ev,
847862
const TActorContext &ctx)
848-
{
863+
{
849864
const auto& appConfig = ev->Get()->Record.GetConfig();
850865
if (appConfig.HasFeatureFlags()) {
851866
EnableStableNodeNames = appConfig.GetFeatureFlags().GetEnableStableNodeNames();

ydb/core/mind/node_broker__register_node.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,11 @@ class TNodeBroker::TTxRegisterNode : public TTransactionBase<TNodeBroker> {
100100
Self->DbUpdateNodeLease(node, txc);
101101
ExtendLease = true;
102102
}
103-
node.AuthorizedByCertificate = rec.GetAuthorizedByCertificate();
104-
103+
if (node.AuthorizedByCertificate != rec.GetAuthorizedByCertificate()) {
104+
node.AuthorizedByCertificate = rec.GetAuthorizedByCertificate();
105+
Self->DbUpdateNodeAuthorizedByCertificate(node, txc);
106+
}
107+
105108
if (Self->EnableStableNodeNames) {
106109
if (ServicedSubDomain != node.ServicedSubDomain) {
107110
if (node.SlotIndex.has_value()) {
@@ -110,12 +113,12 @@ class TNodeBroker::TTxRegisterNode : public TTransactionBase<TNodeBroker> {
110113
node.ServicedSubDomain = ServicedSubDomain;
111114
node.SlotIndex = Self->SlotIndexesPools[node.ServicedSubDomain].AcquireLowestFreeIndex();
112115
Self->DbAddNode(node, txc);
113-
} else if (!node.SlotIndex.has_value()) {
116+
} else if (!node.SlotIndex.has_value()) {
114117
node.SlotIndex = Self->SlotIndexesPools[node.ServicedSubDomain].AcquireLowestFreeIndex();
115118
Self->DbAddNode(node, txc);
116119
}
117120
}
118-
121+
119122
Response->Record.MutableStatus()->SetCode(TStatus::OK);
120123
Self->FillNodeInfo(node, *Response->Record.MutableNode());
121124

ydb/core/mind/node_broker__scheme.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ struct Schema : NIceDb::Schema {
2525
struct Location : Column<12, NScheme::NTypeIds::String> {};
2626
struct ServicedSubDomain : Column<13, NScheme::NTypeIds::String> { using Type = NKikimrSubDomains::TDomainKey; };
2727
struct SlotIndex : Column<14, NScheme::NTypeIds::Uint32> {};
28+
struct AuthorizedByCertificate : Column<15, NScheme::NTypeIds::Bool> {};
2829

2930
using TKey = TableKey<ID>;
3031
using TColumns = TableColumns<
@@ -37,7 +38,8 @@ struct Schema : NIceDb::Schema {
3738
Expire,
3839
Location,
3940
ServicedSubDomain,
40-
SlotIndex
41+
SlotIndex,
42+
AuthorizedByCertificate
4143
>;
4244
};
4345

ydb/core/mind/node_broker_impl.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,8 @@ class TNodeBroker : public TActor<TNodeBroker>
288288
TTransactionContext &txc);
289289
void DbUpdateNodeLocation(const TNodeInfo &node,
290290
TTransactionContext &txc);
291+
void DbUpdateNodeAuthorizedByCertificate(const TNodeInfo &node,
292+
TTransactionContext &txc);
291293

292294
void Handle(TEvConsole::TEvConfigNotificationRequest::TPtr &ev,
293295
const TActorContext &ctx);

0 commit comments

Comments
 (0)