chg: option to disable bor logs

This commit is contained in:
Denis Ermolin 2021-05-20 12:41:27 +07:00 committed by Arpit Temani
parent 11880ac970
commit 58d55c520c
6 changed files with 33 additions and 10 deletions

View file

@ -58,6 +58,7 @@ var (
app = flags.NewApp(gitCommit, gitDate, fmt.Sprintf("the %s command line interface", repositoryIdentifier))
// flags that configure the node
nodeFlags = []cli.Flag{
utils.BorLogsFlag,
utils.IdentityFlag,
utils.UnlockedAccountFlag,
utils.PasswordFileFlag,

View file

@ -370,6 +370,10 @@ var (
Value: ethconfig.Defaults.TxPool.Lifetime,
}
// Performance tuning settings
BorLogsFlag = cli.BoolFlag{
Name: "bor.logs",
Usage: "Enable bor logs retrieval",
}
CacheFlag = cli.IntFlag{
Name: "cache",
Usage: "Megabytes of memory allocated to internal caching (default = 4096 mainnet full node, 128 light mode)",
@ -1468,6 +1472,10 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) {
setWhitelist(ctx, cfg)
setLes(ctx, cfg)
if ctx.GlobalIsSet(BorLogsFlag.Name) {
cfg.BorLogs = ctx.GlobalBool(BorLogsFlag.Name)
}
if ctx.GlobalIsSet(SyncModeFlag.Name) {
cfg.SyncMode = *GlobalTextMarshaler(ctx, SyncModeFlag.Name).(*downloader.SyncMode)
}

View file

@ -299,7 +299,7 @@ func (s *Ethereum) APIs() []rpc.API {
// BOR change starts
// set genesis to public filter api
publicFilterAPI := filters.NewPublicFilterAPI(s.APIBackend, false, 5*time.Minute)
publicFilterAPI := filters.NewPublicFilterAPI(s.APIBackend, false, 5*time.Minute, s.config.BorLogs)
// avoiding constructor changed by introducing new method to set genesis
publicFilterAPI.SetChainConfig(s.blockchain.Config())
// BOR change ends

View file

@ -209,6 +209,9 @@ type Config struct {
// Berlin block override (TODO: remove after the fork)
OverrideBerlin *big.Int `toml:",omitempty"`
// Bor logs flag
BorLogs bool
}
// CreateConsensusEngine creates a consensus engine for the given chain configuration.

View file

@ -57,18 +57,20 @@ type PublicFilterAPI struct {
filtersMu sync.Mutex
filters map[rpc.ID]*filter
timeout time.Duration
borLogs bool
chainConfig *params.ChainConfig
}
// NewPublicFilterAPI returns a new PublicFilterAPI instance.
func NewPublicFilterAPI(backend Backend, lightMode bool, timeout time.Duration) *PublicFilterAPI {
func NewPublicFilterAPI(backend Backend, lightMode bool, timeout time.Duration, borLogs bool) *PublicFilterAPI {
api := &PublicFilterAPI{
backend: backend,
chainDb: backend.ChainDb(),
events: NewEventSystem(backend, lightMode),
filters: make(map[rpc.ID]*filter),
timeout: timeout,
borLogs: borLogs,
}
go api.timeoutLoop(timeout)
@ -347,7 +349,9 @@ func (api *PublicFilterAPI) GetLogs(ctx context.Context, crit FilterCriteria) ([
// Block filter requested, construct a single-shot filter
filter = NewBlockFilter(api.backend, *crit.BlockHash, crit.Addresses, crit.Topics)
// Block bor filter
borLogsFilter = NewBorBlockLogsFilter(api.backend, sprint, *crit.BlockHash, crit.Addresses, crit.Topics)
if api.borLogs {
borLogsFilter = NewBorBlockLogsFilter(api.backend, sprint, *crit.BlockHash, crit.Addresses, crit.Topics)
}
} else {
// Convert the RPC block numbers into internal representations
begin := rpc.LatestBlockNumber.Int64()
@ -361,7 +365,9 @@ func (api *PublicFilterAPI) GetLogs(ctx context.Context, crit FilterCriteria) ([
// Construct the range filter
filter = NewRangeFilter(api.backend, begin, end, crit.Addresses, crit.Topics)
// Block bor filter
borLogsFilter = NewBorBlockLogsRangeFilter(api.backend, sprint, begin, end, crit.Addresses, crit.Topics)
if api.borLogs {
borLogsFilter = NewBorBlockLogsRangeFilter(api.backend, sprint, begin, end, crit.Addresses, crit.Topics)
}
}
// Run the filter and return all the logs
@ -369,14 +375,19 @@ func (api *PublicFilterAPI) GetLogs(ctx context.Context, crit FilterCriteria) ([
if err != nil {
return nil, err
}
// Run the filter and return all the logs
borBlockLogs, err := borLogsFilter.Logs(ctx)
if err != nil {
return nil, err
if borLogsFilter != nil {
// Run the filter and return all the logs
borBlockLogs, err := borLogsFilter.Logs(ctx)
if err != nil {
return nil, err
}
return returnLogs(types.MergeBorLogs(logs, borBlockLogs)), err
}
// merge bor block logs and receipt logs and return it
return returnLogs(types.MergeBorLogs(logs, borBlockLogs)), err
return returnLogs(logs), err
}
// UninstallFilter removes the filter with the given filter id.

View file

@ -299,7 +299,7 @@ func (s *LightEthereum) APIs() []rpc.API {
}, {
Namespace: "eth",
Version: "1.0",
Service: filters.NewPublicFilterAPI(s.ApiBackend, true, 5*time.Minute),
Service: filters.NewPublicFilterAPI(s.ApiBackend, true, 5*time.Minute, false),
Public: true,
}, {
Namespace: "net",