Merge pull request #14 from openrelayxyz/develop

Fix race condition in ancients hook
This commit is contained in:
AusIV 2021-10-22 15:03:14 -05:00 committed by GitHub
commit fe20d6aa05
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -5,13 +5,17 @@ import (
"github.com/ethereum/go-ethereum/plugins"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/rlp"
"sync"
)
var (
freezerUpdates map[uint64]map[string]interface{}
lock sync.Mutex
)
func PluginTrackUpdate(num uint64, kind string, value interface{}) {
lock.Lock()
defer lock.Unlock()
if freezerUpdates == nil { freezerUpdates = make(map[uint64]map[string]interface{}) }
update, ok := freezerUpdates[num]
if !ok {
@ -21,11 +25,6 @@ func PluginTrackUpdate(num uint64, kind string, value interface{}) {
update[kind] = value
}
func PluginResetUpdate(num uint64) {
delete(freezerUpdates, num)
}
func pluginCommitUpdate(num uint64) {
if plugins.DefaultPluginLoader == nil {
log.Warn("Attempting CommitUpdate, but default PluginLoader has not been initialized")
@ -35,6 +34,8 @@ func pluginCommitUpdate(num uint64) {
}
func PluginCommitUpdate(pl *plugins.PluginLoader, num uint64) {
lock.Lock()
defer lock.Unlock()
if freezerUpdates == nil { freezerUpdates = make(map[uint64]map[string]interface{}) }
defer func() { delete(freezerUpdates, num) }()
update, ok := freezerUpdates[num]