[#1110] node: Use single handler for new epoch event
All checks were successful
Vulncheck / Vulncheck (pull_request) Successful in 2m15s
DCO action / DCO (pull_request) Successful in 2m11s
Build / Build Components (1.21) (pull_request) Successful in 3m50s
Build / Build Components (1.20) (pull_request) Successful in 4m29s
Tests and linters / Staticcheck (pull_request) Successful in 6m28s
Tests and linters / Lint (pull_request) Successful in 8m21s
Tests and linters / gopls check (pull_request) Successful in 8m18s
Tests and linters / Tests (1.20) (pull_request) Successful in 4m35s
Tests and linters / Tests (1.21) (pull_request) Successful in 4m43s
Tests and linters / Tests with -race (pull_request) Successful in 5m46s
All checks were successful
Vulncheck / Vulncheck (pull_request) Successful in 2m15s
DCO action / DCO (pull_request) Successful in 2m11s
Build / Build Components (1.21) (pull_request) Successful in 3m50s
Build / Build Components (1.20) (pull_request) Successful in 4m29s
Tests and linters / Staticcheck (pull_request) Successful in 6m28s
Tests and linters / Lint (pull_request) Successful in 8m21s
Tests and linters / gopls check (pull_request) Successful in 8m18s
Tests and linters / Tests (1.20) (pull_request) Successful in 4m35s
Tests and linters / Tests (1.21) (pull_request) Successful in 4m43s
Tests and linters / Tests with -race (pull_request) Successful in 5m46s
Bootstrap logic depends on the netmap status, which in turn depends on the node info. Updating them in a single thread makes things more predictable. Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
This commit is contained in:
parent
e25bddce62
commit
15abbe52f0
2 changed files with 17 additions and 17 deletions
|
@ -1153,6 +1153,18 @@ func (c *cfg) setContractNodeInfo(ni *netmap.NodeInfo) {
|
|||
c.cfgNetmap.state.setNodeInfo(ni)
|
||||
}
|
||||
|
||||
func (c *cfg) updateContractNodeInfo(epoch uint64) {
|
||||
ni, err := c.netmapLocalNodeState(epoch)
|
||||
if err != nil {
|
||||
c.log.Error(logs.FrostFSNodeCouldNotUpdateNodeStateOnNewEpoch,
|
||||
zap.Uint64("epoch", epoch),
|
||||
zap.String("error", err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
c.setContractNodeInfo(ni)
|
||||
}
|
||||
|
||||
// bootstrapWithState calls "addPeer" method of the Sidechain Netmap contract
|
||||
// with the binary-encoded information from the current node's configuration.
|
||||
// The state is set using the provided setter which MUST NOT be nil.
|
||||
|
|
|
@ -176,7 +176,11 @@ func addNewEpochNotificationHandlers(c *cfg) {
|
|||
c.cfgNetmap.state.setCurrentEpoch(ev.(netmapEvent.NewEpoch).EpochNumber())
|
||||
})
|
||||
|
||||
addNewEpochAsyncNotificationHandler(c, func(_ event.Event) {
|
||||
addNewEpochAsyncNotificationHandler(c, func(ev event.Event) {
|
||||
e := ev.(netmapEvent.NewEpoch).EpochNumber()
|
||||
|
||||
c.updateContractNodeInfo(e)
|
||||
|
||||
if !c.needBootstrap() || c.cfgNetmap.reBoostrapTurnedOff.Load() { // fixes #470
|
||||
return
|
||||
}
|
||||
|
@ -186,22 +190,6 @@ func addNewEpochNotificationHandlers(c *cfg) {
|
|||
}
|
||||
})
|
||||
|
||||
addNewEpochAsyncNotificationHandler(c, func(ev event.Event) {
|
||||
e := ev.(netmapEvent.NewEpoch).EpochNumber()
|
||||
|
||||
ni, err := c.netmapLocalNodeState(e)
|
||||
if err != nil {
|
||||
c.log.Error(logs.FrostFSNodeCouldNotUpdateNodeStateOnNewEpoch,
|
||||
zap.Uint64("epoch", e),
|
||||
zap.String("error", err.Error()),
|
||||
)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
c.setContractNodeInfo(ni)
|
||||
})
|
||||
|
||||
if c.cfgMorph.notaryEnabled {
|
||||
addNewEpochAsyncNotificationHandler(c, func(_ event.Event) {
|
||||
_, err := makeNotaryDeposit(c)
|
||||
|
|
Loading…
Reference in a new issue