File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -21,6 +21,7 @@ import (
2121 "errors"
2222 "math"
2323 //"sort"
24+ "fmt"
2425 "path/filepath"
2526 "runtime"
2627 "sync"
@@ -314,7 +315,7 @@ func (m *Monitor) taskLoop() {
314315 }
315316}
316317
317- func (m * Monitor ) exit () {
318+ /* func (m *Monitor) exit() {
318319 m.closeOnce.Do(func() {
319320 if m.exitCh != nil {
320321 close(m.exitCh)
@@ -357,6 +358,52 @@ func (m *Monitor) Stop() error {
357358 }
358359 log.Info("Fs listener synchronizing closed")
359360 return nil
361+ }*/
362+
363+ func (m * Monitor ) exit () {
364+ m .closeOnce .Do (func () {
365+ if m .exitCh != nil {
366+ close (m .exitCh )
367+ m .wg .Wait ()
368+ } else {
369+ log .Debug ("Listener exit channel already closed" )
370+ }
371+ })
372+ }
373+
374+ func (m * Monitor ) Stop () error {
375+ m .lock .Lock ()
376+ if m .terminated .Swap (true ) {
377+ m .lock .Unlock ()
378+ return nil
379+ }
380+ m .lock .Unlock ()
381+
382+ m .exit ()
383+ log .Info ("Monitor is waiting to be closed" )
384+
385+ var errs []error
386+
387+ m .blockCache .Purge ()
388+ m .sizeCache .Purge ()
389+
390+ if m .engine != nil {
391+ log .Info ("Closing Golang-kv engine" , "engine" , m .engine .Name ())
392+ if err := m .engine .Close (); err != nil {
393+ errs = append (errs , fmt .Errorf ("engine close: %w" , err ))
394+ }
395+ }
396+
397+ if err := m .fs .Close (); err != nil {
398+ errs = append (errs , fmt .Errorf ("fs close: %w" , err ))
399+ }
400+
401+ log .Info ("Fs listener synchronizing closed" )
402+
403+ if len (errs ) > 0 {
404+ return errors .Join (errs ... )
405+ }
406+ return nil
360407}
361408
362409// Start ... start ListenOn on the rpc port of a blockchain full node
You can’t perform that action at this time.
0 commit comments