arnaucube
arnaucube/hermez-nodePublic Self-hosted repository
Implement an eficient memory storage, Resolve #120
Eduard S eduard@iden3.io
Tue, 20 Oct 2020 12:57:07 +0200
commit

96ceb014bffd600863a54251900f7a32e70231b4

parent

c67b1df8cd3d997c3c9f331bb380420ae32fe291

1 files changed, 17 insertions(+), 2 deletions(-)

jump to
M db/statedb/txprocessors.go → db/statedb/txprocessors.go

@@ -2,14 +2,16 @@ package statedb

import ( "errors" + "io/ioutil" "math/big" + "os" "github.com/hermeznetwork/hermez-node/common" "github.com/hermeznetwork/hermez-node/log" "github.com/iden3/go-iden3-crypto/babyjub" "github.com/iden3/go-merkletree" "github.com/iden3/go-merkletree/db" - "github.com/iden3/go-merkletree/db/memory" + "github.com/iden3/go-merkletree/db/pebble" ) var (

@@ -61,7 +63,20 @@

// TBD if ExitTree is only in memory or stored in disk, for the moment // only needed in memory if s.typ == TypeSynchronizer || s.typ == TypeBatchBuilder { - exitTree, err = merkletree.NewMerkleTree(memory.NewMemoryStorage(), s.mt.MaxLevels()) + tmpDir, err := ioutil.TempDir("", "hermez-statedb-exittree") + if err != nil { + return nil, nil, err + } + defer func() { + if err := os.RemoveAll(tmpDir); err != nil { + log.Errorw("Dleting statedb temp exit tree", "err", err) + } + }() + sto, err := pebble.NewPebbleStorage(tmpDir, false) + if err != nil { + return nil, nil, err + } + exitTree, err = merkletree.NewMerkleTree(sto, s.mt.MaxLevels()) if err != nil { return nil, nil, err }