Shared genesis db (#6465)

This commit is contained in:
Alex Sharov 2022-12-29 14:47:17 +07:00 committed by GitHub
parent a528249b00
commit ca3bc54428
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -26,6 +26,7 @@ import (
"errors"
"fmt"
"math/big"
"os"
"sync"
"github.com/c2h5oh/datasize"
@ -90,6 +91,14 @@ type AuthorityRoundSeal struct {
Signature common.Hash `json:"signature"`
}
var genesisTmpDB kv.RwDB
var genesisDBLock *sync.Mutex
func init() {
genesisTmpDB = mdbx.NewMDBX(log.New()).InMem(os.TempDir()).MapSize(2 * datasize.GB).PageSize(2 * 4096).WriteMergeThreshold(2 * 8192).MustOpen()
genesisDBLock = &sync.Mutex{}
}
func (ga *GenesisAlloc) UnmarshalJSON(data []byte) error {
m := make(map[common.UnprefixedAddress]GenesisAccount)
if err := json.Unmarshal(data, &m); err != nil {
@ -370,9 +379,9 @@ func (g *Genesis) ToBlock() (*types.Block, *state.IntraBlockState, error) {
go func() { // we may run inside write tx, can't open 2nd write tx in same goroutine
// TODO(yperbasis): use memdb.MemoryMutation instead
defer wg.Done()
tmpDB := mdbx.NewMDBX(log.New()).InMem("").MapSize(2 * datasize.GB).MustOpen()
defer tmpDB.Close()
tx, err := tmpDB.BeginRw(context.Background())
genesisDBLock.Lock()
defer genesisDBLock.Unlock()
tx, err := genesisTmpDB.BeginRw(context.Background())
if err != nil {
panic(err)
}