Skip to content

Commit

Permalink
Merge pull request #1775 from CortexFoundation/dev
Browse files Browse the repository at this point in the history
core/state, tests: fix memory leak via fastcache
  • Loading branch information
ucwong authored Oct 24, 2023
2 parents e3be1c5 + 3ff1a8d commit 074e364
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 0 deletions.
4 changes: 4 additions & 0 deletions build/ci.go
Original file line number Diff line number Diff line change
Expand Up @@ -289,6 +289,7 @@ func doTest(cmdline []string) {
coverage = flag.Bool("coverage", false, "Whether to record code coverage")
verbose = flag.Bool("v", false, "Whether to log verbosely")
race = flag.Bool("race", false, "Execute the race detector")
short = flag.Bool("short", false, "Pass the 'short'-flag to go test")
)
flag.CommandLine.Parse(cmdline)

Expand All @@ -312,6 +313,9 @@ func doTest(cmdline []string) {
if *race {
gotest.Args = append(gotest.Args, "-race")
}
if *short {
gotest.Args = append(gotest.Args, "-short")
}

packages := []string{"./..."}
if len(flag.CommandLine.Args()) > 0 {
Expand Down
1 change: 1 addition & 0 deletions core/blockchain.go
Original file line number Diff line number Diff line change
Expand Up @@ -909,6 +909,7 @@ func (bc *BlockChain) Stop() {
log.Error("Failed to journal state snapshot", "err", err)
}
}
bc.snaps.Release()
}

// Ensure the state of a recent block is also stored to disk before exiting.
Expand Down
10 changes: 10 additions & 0 deletions core/state/snapshot/disklayer.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,16 @@ type diskLayer struct {
lock sync.RWMutex
}

// Release releases underlying resources; specifically the fastcache requires
// Reset() in order to not leak memory.
// OBS: It does not invoke Close on the diskdb
func (dl *diskLayer) Release() error {
if dl.cache != nil {
dl.cache.Reset()
}
return nil
}

// Root returns root hash for which this snapshot was made.
func (dl *diskLayer) Root() common.Hash {
return dl.root
Expand Down
7 changes: 7 additions & 0 deletions core/state/snapshot/snapshot.go
Original file line number Diff line number Diff line change
Expand Up @@ -668,6 +668,13 @@ func diffToDisk(bottom *diffLayer) *diskLayer {
return res
}

// Release releases resources
func (t *Tree) Release() {
if dl := t.disklayer(); dl != nil {
dl.Release()
}
}

// Journal commits an entire diff hierarchy to disk into a single journal entry.
// This is meant to be used during shutdown to persist the snapshot without
// flattening everything down (bad for reorgs).
Expand Down

0 comments on commit 074e364

Please sign in to comment.