Unverified Commit 1244056a authored by Steven Allen's avatar Steven Allen Committed by GitHub

Merge pull request #6176 from ipfs/fix/close-repo

fix two bugs where the repo may not properly be closed
parents c8279e95 285a2764
......@@ -24,6 +24,7 @@ import (
fsrepo "github.com/ipfs/go-ipfs/repo/fsrepo"
migrate "github.com/ipfs/go-ipfs/repo/fsrepo/migrations"
"github.com/hashicorp/go-multierror"
"github.com/ipfs/go-ipfs-cmdkit"
cmds "github.com/ipfs/go-ipfs-cmds"
mprome "github.com/ipfs/go-metrics-prometheus"
......@@ -278,6 +279,10 @@ func daemonFunc(req *cmds.Request, re cmds.ResponseEmitter, env cmds.Environment
break
}
// The node will also close the repo but there are many places we could
// fail before we get to that. It can't hurt to close it twice.
defer repo.Close()
cfg, err := cctx.GetConfig()
if err != nil {
return err
......@@ -417,13 +422,14 @@ func daemonFunc(req *cmds.Request, re cmds.ResponseEmitter, env cmds.Environment
// collect long-running errors and block for shutdown
// TODO(cryptix): our fuse currently doesnt follow this pattern for graceful shutdown
var errs error
for err := range merge(apiErrc, gwErrc, gcErrc) {
if err != nil {
return err
errs = multierror.Append(errs, err)
}
}
return nil
return errs
}
// serveHTTPApi collects options, creates listener, prints status message and starts serving requests
......
......@@ -128,6 +128,11 @@ test_expect_success "daemon with pipe eventually becomes live" '
test_fsh cat stdin_daemon_out || test_fsh cat stdin_daemon_err || test_fsh cat stdin_poll_apiout || test_fsh cat stdin_poll_apierr
'
test_expect_success "'ipfs daemon' cleans up when it fails to start" '
test_must_fail ipfs daemon --routing=foobar &&
test ! -e "$IPFS_PATH/repo.lock"
'
ulimit -S -n 512
TEST_ULIMIT_PRESET=1
test_launch_ipfs_daemon
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment