From e582efd7821202dc218bbd546ea64431979bb3cc Mon Sep 17 00:00:00 2001 From: Janos Guljas Date: Tue, 5 Feb 2019 17:10:15 +0100 Subject: [PATCH] node: close AccountsManager in new Close method --- node/node.go | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/node/node.go b/node/node.go index c35a509723..d0df39f6e8 100644 --- a/node/node.go +++ b/node/node.go @@ -121,6 +121,32 @@ func New(conf *Config) (*Node, error) { }, nil } +// Close releases resources acquired in Node constructor New. +func (n *Node) Close() error { + n.lock.Lock() + defer n.lock.Unlock() + + // Close account manager + var accmanErr error + if n.accman != nil { + accmanErr = n.accman.Close() + if accmanErr == nil { + n.accman = nil + } + } + + // Remove the keystore if it was created ephemerally. + var keystoreErr error + if n.ephemeralKeystore != "" { + keystoreErr = os.RemoveAll(n.ephemeralKeystore) + } + + if accmanErr != nil { + return accmanErr + } + return keystoreErr +} + // Register injects a new service into the node's stack. The service created by // the passed constructor must be unique in its type with regard to sibling ones. func (n *Node) Register(constructor ServiceConstructor) error { @@ -435,18 +461,9 @@ func (n *Node) Stop() error { // unblock n.Wait close(n.stop) - // Remove the keystore if it was created ephemerally. - var keystoreErr error - if n.ephemeralKeystore != "" { - keystoreErr = os.RemoveAll(n.ephemeralKeystore) - } - if len(failure.Services) > 0 { return failure } - if keystoreErr != nil { - return keystoreErr - } return nil }