forked from TrueCloudLab/frostfs-node
[#1900] node: Fix loosing the "maintenance" status
In previous implementation node lost maintenance status after successful switching to it. For example, after some period of time node sent bootstrap requests with the "online" state instead of "maintenance". Make `startMaintenance` method to set maintenance status in the `networkState`. Signed-off-by: Leonard Lyubich <ctulhurider@gmail.com>
This commit is contained in:
parent
db92e96e40
commit
98034005f1
3 changed files with 11 additions and 2 deletions
|
@ -29,6 +29,7 @@ Changelog for NeoFS Node
|
||||||
- Make it possible to use `shard.ContainerSize` in read-only mode (#1975)
|
- Make it possible to use `shard.ContainerSize` in read-only mode (#1975)
|
||||||
- Storage node now starts if at least one gRPC enpoint is available (#1893)
|
- Storage node now starts if at least one gRPC enpoint is available (#1893)
|
||||||
- Missing object relatives in object removal session opened by NeoFS CLI (#1978)
|
- Missing object relatives in object removal session opened by NeoFS CLI (#1978)
|
||||||
|
- Bringing a node back online during maintenance (#1900)
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
### Updated
|
### Updated
|
||||||
|
|
|
@ -312,8 +312,9 @@ type internals struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// starts node's maintenance.
|
// starts node's maintenance.
|
||||||
func (c *internals) startMaintenance() {
|
func (c *cfg) startMaintenance() {
|
||||||
c.isMaintenance.Store(true)
|
c.isMaintenance.Store(true)
|
||||||
|
c.cfgNetmap.state.setControlNetmapStatus(control.NetmapStatus_MAINTENANCE)
|
||||||
c.log.Info("started local node's maintenance")
|
c.log.Info("started local node's maintenance")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -84,7 +84,14 @@ func (s *networkState) setNodeInfo(ni *netmapSDK.NodeInfo) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
s.controlNetStatus.Store(ctrlNetSt)
|
s.setControlNetmapStatus(ctrlNetSt)
|
||||||
|
}
|
||||||
|
|
||||||
|
// sets the current node state to the given value. Subsequent cfg.bootstrap
|
||||||
|
// calls will process this value to decide what status node should set in the
|
||||||
|
// network.
|
||||||
|
func (s *networkState) setControlNetmapStatus(st control.NetmapStatus) {
|
||||||
|
s.controlNetStatus.Store(st)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *networkState) controlNetmapStatus() (res control.NetmapStatus) {
|
func (s *networkState) controlNetmapStatus() (res control.NetmapStatus) {
|
||||||
|
|
Loading…
Reference in a new issue