node: close AccountsManager in new Close method

This commit is contained in:
Janos Guljas 2019-02-05 17:10:15 +01:00
parent 7c60d0a6a2
commit e582efd782

View file

@ -121,6 +121,32 @@ func New(conf *Config) (*Node, error) {
}, nil }, 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 // 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. // the passed constructor must be unique in its type with regard to sibling ones.
func (n *Node) Register(constructor ServiceConstructor) error { func (n *Node) Register(constructor ServiceConstructor) error {
@ -435,18 +461,9 @@ func (n *Node) Stop() error {
// unblock n.Wait // unblock n.Wait
close(n.stop) 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 { if len(failure.Services) > 0 {
return failure return failure
} }
if keystoreErr != nil {
return keystoreErr
}
return nil return nil
} }