forked from TrueCloudLab/frostfs-node
e5748bfc96
IR tries to keep 1:3 proportion of GAS and notary balances respectively. If that proportion has been messed(means that notary balance is lower than required) it sends half of its GAS balance to the notary service. Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
67 lines
2 KiB
Go
67 lines
2 KiB
Go
package netmap
|
|
|
|
import (
|
|
"github.com/nspcc-dev/neofs-node/pkg/innerring/processors/audit"
|
|
"github.com/nspcc-dev/neofs-node/pkg/innerring/processors/governance"
|
|
"github.com/nspcc-dev/neofs-node/pkg/innerring/processors/settlement"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
// Process new epoch notification by setting global epoch value and resetting
|
|
// local epoch timer.
|
|
func (np *Processor) processNewEpoch(epoch uint64) {
|
|
np.epochState.SetEpochCounter(epoch)
|
|
if err := np.epochTimer.ResetEpochTimer(); err != nil {
|
|
np.log.Warn("can't reset epoch timer",
|
|
zap.String("error", err.Error()))
|
|
}
|
|
|
|
epochDuration, err := np.netmapClient.EpochDuration()
|
|
if err != nil {
|
|
np.log.Warn("can't get epoch duration",
|
|
zap.String("error", err.Error()))
|
|
} else {
|
|
np.epochState.SetEpochDuration(epochDuration)
|
|
}
|
|
|
|
// get new netmap snapshot
|
|
networkMap, err := np.netmapClient.Snapshot()
|
|
if err != nil {
|
|
np.log.Warn("can't get netmap snapshot to perform cleanup",
|
|
zap.String("error", err.Error()))
|
|
|
|
return
|
|
}
|
|
|
|
if epoch > 0 { // estimates are invalid in genesis epoch
|
|
err = np.containerWrp.StartEstimation(epoch - 1)
|
|
|
|
if err != nil {
|
|
np.log.Warn("can't start container size estimation",
|
|
zap.Uint64("epoch", epoch),
|
|
zap.String("error", err.Error()))
|
|
}
|
|
}
|
|
|
|
np.netmapSnapshot.update(networkMap, epoch)
|
|
np.handleCleanupTick(netmapCleanupTick{epoch: epoch})
|
|
np.handleNewAudit(audit.NewAuditStartEvent(epoch))
|
|
np.handleAuditSettlements(settlement.NewAuditEvent(epoch))
|
|
np.handleAlphabetSync(governance.NewSyncEvent())
|
|
}
|
|
|
|
// Process new epoch tick by invoking new epoch method in network map contract.
|
|
func (np *Processor) processNewEpochTick() {
|
|
if !np.alphabetState.IsAlphabet() {
|
|
np.log.Info("non alphabet mode, ignore new epoch tick")
|
|
return
|
|
}
|
|
|
|
nextEpoch := np.epochState.EpochCounter() + 1
|
|
np.log.Debug("next epoch", zap.Uint64("value", nextEpoch))
|
|
|
|
err := np.netmapClient.NewEpoch(nextEpoch)
|
|
if err != nil {
|
|
np.log.Error("can't invoke netmap.NewEpoch", zap.Error(err))
|
|
}
|
|
}
|