diff --git a/ingest/ledgerbackend/captive_core_backend.go b/ingest/ledgerbackend/captive_core_backend.go index f023970fcc..652bdb5126 100644 --- a/ingest/ledgerbackend/captive_core_backend.go +++ b/ingest/ledgerbackend/captive_core_backend.go @@ -192,9 +192,13 @@ func (c *CaptiveStellarCore) openOfflineReplaySubprocess(from, to uint32) error to = latestCheckpointSequence } - c.stellarCoreRunner, err = c.stellarCoreRunnerFactory(stellarCoreRunnerModeOffline) - if err != nil { + var runner stellarCoreRunnerInterface + if runner, err = c.stellarCoreRunnerFactory(stellarCoreRunnerModeOffline); err != nil { return errors.Wrap(err, "error creating stellar-core runner") + } else { + // only assign c.stellarCoreRunner if runner is not nil to avoid nil interface check + // see https://golang.org/doc/faq#nil_error + c.stellarCoreRunner = runner } err = c.stellarCoreRunner.catchup(from, to) @@ -231,9 +235,13 @@ func (c *CaptiveStellarCore) openOnlineReplaySubprocess(from uint32) error { ) } - c.stellarCoreRunner, err = c.stellarCoreRunnerFactory(stellarCoreRunnerModeOnline) - if err != nil { + var runner stellarCoreRunnerInterface + if runner, err = c.stellarCoreRunnerFactory(stellarCoreRunnerModeOnline); err != nil { return errors.Wrap(err, "error creating stellar-core runner") + } else { + // only assign c.stellarCoreRunner if runner is not nil to avoid nil interface check + // see https://golang.org/doc/faq#nil_error + c.stellarCoreRunner = runner } runFrom, ledgerHash, nextLedger, err := c.runFromParams(from) diff --git a/ingest/ledgerbackend/captive_core_backend_test.go b/ingest/ledgerbackend/captive_core_backend_test.go index 807c427cbb..5b8249240f 100644 --- a/ingest/ledgerbackend/captive_core_backend_test.go +++ b/ingest/ledgerbackend/captive_core_backend_test.go @@ -544,7 +544,7 @@ func TestGetLatestLedgerSequence(t *testing.T) { err := captiveBackend.PrepareRange(UnboundedRange(64)) assert.NoError(t, err) - // To prevent flaky test runs handleExit for channel to fill. + // To prevent flaky test runs wait for channel to fill. waitForBufferToFill(&captiveBackend) latest, err := captiveBackend.GetLatestLedgerSequence()