Skip to content

Commit e1881bd

Browse files
committed
opt
1 parent 5eb7973 commit e1881bd

1 file changed

Lines changed: 48 additions & 1 deletion

File tree

monitor.go

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff 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

0 commit comments

Comments
 (0)