mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
node: close AccountsManager in new Close method
This commit is contained in:
parent
7c60d0a6a2
commit
e582efd782
1 changed files with 26 additions and 9 deletions
35
node/node.go
35
node/node.go
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue