Skip to content

Commit

Permalink
Bor rpc config fix (#8413)
Browse files Browse the repository at this point in the history
This is an additional fix for BorRo to add bor config in the constructor
- otherwise code which accesses chain config will panic.
  • Loading branch information
mh0lt committed Oct 10, 2023
1 parent 7deb699 commit 0d190ff
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 11 deletions.
4 changes: 2 additions & 2 deletions cmd/rpcdaemon/cli/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -483,7 +483,7 @@ func RemoteServices(ctx context.Context, cfg httpcfg.HttpCfg, logger log.Logger,
}
// Skip the compatibility check, until we have a schema in erigon-lib

engine = bor.NewRo(borKv, blockReader,
engine = bor.NewRo(cc, borKv, blockReader,
span.NewChainSpanner(contract.ValidatorSet(), cc, true, logger),
contract.NewGenesisContractsClient(cc, cc.Bor.ValidatorContract, cc.Bor.StateReceiverContract, logger), logger)

Expand Down Expand Up @@ -827,7 +827,7 @@ func (e *remoteConsensusEngine) init(db kv.RoDB, blockReader services.FullBlockR
return false
}

e.engine = bor.NewRo(borKv, blockReader,
e.engine = bor.NewRo(cc, borKv, blockReader,
span.NewChainSpanner(contract.ValidatorSet(), cc, true, logger),
contract.NewGenesisContractsClient(cc, cc.Bor.ValidatorContract, cc.Bor.StateReceiverContract, logger), logger)
} else {
Expand Down
12 changes: 11 additions & 1 deletion consensus/bor/bor.go
Original file line number Diff line number Diff line change
Expand Up @@ -442,12 +442,22 @@ func (w rwWrapper) BeginRwNosync(ctx context.Context) (kv.RwTx, error) {
}

// This is used by the rpcdaemon which needs read only access to the provided data services
func NewRo(db kv.RoDB, blockReader services.FullBlockReader, spanner Spanner,
func NewRo(chainConfig *chain.Config, db kv.RoDB, blockReader services.FullBlockReader, spanner Spanner,
genesisContracts GenesisContract, logger log.Logger) *Bor {
// get bor config
borConfig := chainConfig.Bor

// Set any missing consensus parameters to their defaults
if borConfig != nil && borConfig.CalculateSprint(0) == 0 {
borConfig.Sprint = defaultSprintLength
}

recents, _ := lru.NewARC[libcommon.Hash, *Snapshot](inmemorySnapshots)
signatures, _ := lru.NewARC[libcommon.Hash, libcommon.Address](inmemorySignatures)

return &Bor{
chainConfig: chainConfig,
config: borConfig,
DB: rwWrapper{db},
blockReader: blockReader,
logger: logger,
Expand Down
6 changes: 3 additions & 3 deletions consensus/bor/finality/whitelist.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ func retryHeimdallHandler(fn heimdallHandler, config *config, tickerDuration tim
}

if config.heimdall == nil {
log.Error("bor engine not available")
config.logger.Error("bor engine not available")
return
}

Expand All @@ -120,7 +120,7 @@ func retryHeimdallHandler(fn heimdallHandler, config *config, tickerDuration tim
cancel()

if err != nil {
log.Warn(fmt.Sprintf("unable to start the %s service - first run", fnName), "err", err)
config.logger.Warn(fmt.Sprintf("unable to start the %s service - first run", fnName), "err", err)
}

ticker := time.NewTicker(tickerDuration)
Expand All @@ -142,7 +142,7 @@ func retryHeimdallHandler(fn heimdallHandler, config *config, tickerDuration tim
cancel()

if err != nil {
log.Warn(fmt.Sprintf("unable to handle %s", fnName), "err", err)
config.logger.Warn(fmt.Sprintf("unable to handle %s", fnName), "err", err)
}
case <-config.closeCh:
return
Expand Down
2 changes: 1 addition & 1 deletion eth/stagedsync/stage_mining_finish.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ func SpawnMiningFinishStage(s *StageState, tx kv.RwTx, cfg MiningFinishCfg, quit
select {
case cfg.sealCancel <- struct{}{}:
default:
logger.Trace("None in-flight sealing task.")
logger.Trace("No in-flight sealing task.")
}
chain := ChainReader{Cfg: cfg.chainConfig, Db: tx, BlockReader: cfg.blockReader}
if err := cfg.engine.Seal(chain, block, cfg.miningState.MiningResultCh, cfg.sealCancel); err != nil {
Expand Down
4 changes: 2 additions & 2 deletions metrics/exp.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,11 @@ func Setup(address string, logger log.Logger) *http.ServeMux {

go func() {
if err := promServer.ListenAndServe(); err != nil {
log.Error("Failure in running Prometheus server", "err", err)
logger.Error("Failure in running Prometheus server", "err", err)
}
}()

log.Info("Enabling metrics export to prometheus", "path", fmt.Sprintf("http://%s/debug/metrics/prometheus", address))
logger.Info("Enabling metrics export to prometheus", "path", fmt.Sprintf("http://%s/debug/metrics/prometheus", address))

return prometheusMux
}
4 changes: 2 additions & 2 deletions turbo/jsonrpc/bor_snapshot.go
Original file line number Diff line number Diff line change
Expand Up @@ -277,9 +277,9 @@ func (api *BorImpl) GetVoteOnHash(ctx context.Context, starBlockNr uint64, endBl
return false, fmt.Errorf("hash mismatch: localChainHash %s, milestoneHash %s", localEndBlockHash, hash)
}

bor, ok := api._engine.(*bor.Bor)
bor, err := api.bor()

if !ok {
if err != nil {
return false, errors.New("bor engine not available")
}

Expand Down

0 comments on commit 0d190ff

Please sign in to comment.