diff --git a/pkg/innerring/processors/settlement/basic/collect.go b/pkg/innerring/processors/settlement/basic/collect.go index 72f4eb8dd..ee7354c4f 100644 --- a/pkg/innerring/processors/settlement/basic/collect.go +++ b/pkg/innerring/processors/settlement/basic/collect.go @@ -26,6 +26,11 @@ func (inc *IncomeSettlementContext) Collect() { return } + if cachedRate == 0 { + inc.noop = true + return + } + cnrEstimations, err := inc.estimations.Estimations(inc.epoch) if err != nil { inc.log.Error("can't fetch container size estimations", diff --git a/pkg/innerring/processors/settlement/basic/context.go b/pkg/innerring/processors/settlement/basic/context.go index a605c053b..59bedf2e4 100644 --- a/pkg/innerring/processors/settlement/basic/context.go +++ b/pkg/innerring/processors/settlement/basic/context.go @@ -28,6 +28,8 @@ type ( IncomeSettlementContext struct { mu sync.Mutex // lock to prevent collection and distribution in the same time + noop bool + log *logger.Logger epoch uint64 diff --git a/pkg/innerring/processors/settlement/basic/distribute.go b/pkg/innerring/processors/settlement/basic/distribute.go index a2baa36af..e085f1e22 100644 --- a/pkg/innerring/processors/settlement/basic/distribute.go +++ b/pkg/innerring/processors/settlement/basic/distribute.go @@ -12,6 +12,10 @@ func (inc *IncomeSettlementContext) Distribute() { inc.mu.Lock() defer inc.mu.Unlock() + if inc.noop { + return + } + txTable := common.NewTransferTable() bankBalance, err := inc.balances.Balance(inc.bankOwner)