From d96139b2014374d774db6534d6a1de98c92c4ba6 Mon Sep 17 00:00:00 2001 From: Leonard Lyubich Date: Mon, 17 Oct 2022 19:28:22 +0400 Subject: [PATCH] [#1900] node: Do not override maintenance state on bootstrap In previous implementation node always sent bootstrap requests with "online" network state. This provoked switching to online of the nodes under maintenance. Signed-off-by: Leonard Lyubich --- cmd/neofs-node/config.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/cmd/neofs-node/config.go b/cmd/neofs-node/config.go index e23dd2616..e6abbfd87 100644 --- a/cmd/neofs-node/config.go +++ b/cmd/neofs-node/config.go @@ -837,7 +837,21 @@ func (c *cfg) handleLocalNodeInfo(ni *netmap.NodeInfo) { // bootstrap sets local node's netmap status to "online". func (c *cfg) bootstrap() error { ni := c.cfgNodeInfo.localInfo - ni.SetOnline() + + // switch to online except when under maintenance + if st := c.cfgNetmap.state.controlNetmapStatus(); st == control.NetmapStatus_MAINTENANCE { + ni.SetMaintenance() + + c.log.Info("bootstrap with untouched node state", + zap.Stringer("state", st), + ) + } else { + ni.SetOnline() + + c.log.Info("bootstrapping with online state", + zap.Stringer("previous", st), + ) + } prm := nmClient.AddPeerPrm{} prm.SetNodeInfo(ni)