From f09ee27af937cb6608e24a95030db79ceb508ffb Mon Sep 17 00:00:00 2001 From: Pavel Karpy Date: Thu, 30 Mar 2023 18:24:07 +0300 Subject: [PATCH] [#181] ir: Do not process container estimations by non-alphabet nodes Signed-off-by: Pavel Karpy --- pkg/innerring/blocktimer.go | 11 +++++++++++ pkg/innerring/processors/netmap/process_epoch.go | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/pkg/innerring/blocktimer.go b/pkg/innerring/blocktimer.go index 747f36fd..eb74e44d 100644 --- a/pkg/innerring/blocktimer.go +++ b/pkg/innerring/blocktimer.go @@ -20,6 +20,10 @@ type ( EpochDuration() uint64 } + alphaState interface { + IsAlphabet() bool + } + subEpochEventHandler struct { handler event.Handler // handle to execute durationMul uint32 // X: X/Y of epoch in blocks @@ -31,6 +35,8 @@ type ( epochTimerArgs struct { l *logger.Logger + alphabetState alphaState + newEpochHandlers []newEpochHandler cnrWrapper *container.Client // to invoke stop container estimation @@ -91,6 +97,11 @@ func newEpochTimer(args *epochTimerArgs) *timer.BlockTimer { args.stopEstimationDMul, args.stopEstimationDDiv, func() { + if !args.alphabetState.IsAlphabet() { + args.l.Debug("non-alphabet mode, do not stop container estimations") + return + } + epochN := args.epoch.EpochCounter() if epochN == 0 { // estimates are invalid in genesis epoch return diff --git a/pkg/innerring/processors/netmap/process_epoch.go b/pkg/innerring/processors/netmap/process_epoch.go index 48de528e..ffcddc49 100644 --- a/pkg/innerring/processors/netmap/process_epoch.go +++ b/pkg/innerring/processors/netmap/process_epoch.go @@ -50,7 +50,7 @@ func (np *Processor) processNewEpoch(ev netmapEvent.NewEpoch) { prm.SetEpoch(epoch - 1) prm.SetHash(ev.TxHash()) - if epoch > 0 { // estimates are invalid in genesis epoch + if epoch > 0 && np.alphabetState.IsAlphabet() { // estimates are invalid in genesis epoch err = np.containerWrp.StartEstimation(prm) if err != nil {