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
+6 -5
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]