@@ -90,6 +90,7 @@ import (
9090const LoggerName = "node"
9191
9292type Bee struct {
93+ logger log.Logger
9394 p2pService io.Closer
9495 p2pHalter p2p.Halter
9596 ctxCancel context.CancelFunc
@@ -260,6 +261,7 @@ func NewBee(
260261 })
261262
262263 b = & Bee {
264+ logger : logger ,
263265 ctxCancel : ctxCancel ,
264266 errorLogWriter : sink ,
265267 tracerCloser : tracerCloser ,
@@ -1350,12 +1352,15 @@ func (b *Bee) Shutdown() error {
13501352 }
13511353 // tryClose is a convenient closure which decrease
13521354 // repetitive io.Closer tryClose procedure.
1353- tryClose := func (c io.Closer , errMsg string ) {
1355+ tryClose := func (c io.Closer , component string ) {
13541356 if c == nil {
13551357 return
13561358 }
1359+
1360+ b .logger .Debug ("starting shutdown" , "component" , component )
1361+ defer b .logger .Debug ("finished shutdown" , "component" , component )
13571362 if err := c .Close (); err != nil {
1358- mErr = multierror .Append (mErr , fmt .Errorf ("%s: %w" , errMsg , err ))
1363+ mErr = multierror .Append (mErr , fmt .Errorf ("%s: %w" , component , err ))
13591364 }
13601365 }
13611366
@@ -1429,9 +1434,10 @@ func (b *Bee) Shutdown() error {
14291434 tryClose (b .tracerCloser , "tracer" )
14301435 tryClose (b .topologyCloser , "topology driver" )
14311436 tryClose (b .storageIncetivesCloser , "storage incentives agent" )
1437+ // close localstore before StateStore to avoid ErrClosed / incomplete flush.
1438+ tryClose (b .localstoreCloser , "localstore" )
14321439 tryClose (b .stateStoreCloser , "statestore" )
14331440 tryClose (b .stamperStoreCloser , "stamperstore" )
1434- tryClose (b .localstoreCloser , "localstore" )
14351441 tryClose (b .resolverCloser , "resolver service" )
14361442
14371443 return mErr
0 commit comments