forked from cerc-io/plugeth
core,eth: add debug_setTrieFlushInterval to change trie flush frequency (#24785)
This PR makes it possible to modify the flush interval time via RPC. On one extreme, `0s`, it would act as an archive node. If set to `1h`, means that after one hour of effective block processing time, the trie would be flushed. If one block takes 200ms, this means that a flush would occur every `5*3600=18000` blocks -- however, if the memory size of the cached states grows too large, it will flush sooner. Essentially, this makes it possible to configure the node to be more or less "archive:ish", and without restarting the node while reconfiguring it.
This commit is contained in:
+11
@@ -590,3 +590,14 @@ func (api *DebugAPI) GetAccessibleState(from, to rpc.BlockNumber) (uint64, error
|
||||
}
|
||||
return 0, errors.New("no state found")
|
||||
}
|
||||
|
||||
// SetTrieFlushInterval configures how often in-memory tries are persisted
|
||||
// to disk. The value is in terms of block processing time, not wall clock.
|
||||
func (api *DebugAPI) SetTrieFlushInterval(interval string) error {
|
||||
t, err := time.ParseDuration(interval)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
api.eth.blockchain.SetTrieFlushInterval(t)
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user