diff --git a/services/horizon/internal/ingest/main.go b/services/horizon/internal/ingest/main.go index 0baad13355..d67c4f082b 100644 --- a/services/horizon/internal/ingest/main.go +++ b/services/horizon/internal/ingest/main.go @@ -639,8 +639,11 @@ func (s *system) runStateMachine(cur stateMachineNode) error { func (s *system) maybeVerifyState(lastIngestedLedger uint32) { stateInvalid, err := s.historyQ.GetExpStateInvalid(s.ctx) - if err != nil && !isCancelledError(err) { - log.WithField("err", err).Error("Error getting state invalid value") + if err != nil { + if !isCancelledError(err) { + log.WithField("err", err).Error("Error getting state invalid value") + } + return } // Run verification routine only when... diff --git a/services/horizon/internal/ingest/main_test.go b/services/horizon/internal/ingest/main_test.go index f82ee1f753..b5d0dfb78c 100644 --- a/services/horizon/internal/ingest/main_test.go +++ b/services/horizon/internal/ingest/main_test.go @@ -162,7 +162,7 @@ func TestStateMachineRunReturnsErrorWhenNextStateIsShutdownWithError(t *testing. assert.EqualError(t, err, "invalid range: [0, 0]") } -func TestMaybeVerifyStateGetExpStateInvalidDBErrCancelOrContextCanceled(t *testing.T) { +func TestMaybeVerifyStateGetExpStateInvalidError(t *testing.T) { historyQ := &mockDBQ{} system := &system{ historyQ: historyQ, @@ -180,13 +180,21 @@ func TestMaybeVerifyStateGetExpStateInvalidDBErrCancelOrContextCanceled(t *testi defer func() { log = oldLogger }() historyQ.On("GetExpStateInvalid", system.ctx).Return(false, db.ErrCancelled).Once() - system.maybeVerifyState(0) + system.maybeVerifyState(63) + system.wg.Wait() historyQ.On("GetExpStateInvalid", system.ctx).Return(false, context.Canceled).Once() - system.maybeVerifyState(0) + system.maybeVerifyState(63) + system.wg.Wait() logged := done() assert.Len(t, logged, 0) + + // Ensure state verifier does not start also for any other error + historyQ.On("GetExpStateInvalid", system.ctx).Return(false, errors.New("my error")).Once() + system.maybeVerifyState(63) + system.wg.Wait() + historyQ.AssertExpectations(t) } func TestMaybeVerifyInternalDBErrCancelOrContextCanceled(t *testing.T) {