From b4d94c93c95dbf93bb592cdc259b763e03c38980 Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Fri, 1 Mar 2019 10:54:50 -0800 Subject: [PATCH 1/2] commands(dht): return final error This error has always been exposed as a value (visible with the `-v` flag) but we should also be returning it as a final error. fixes #6032 fixes #4611 License: MIT Signed-off-by: Steven Allen --- core/commands/dht.go | 41 +++++++++++++++++++++----------------- test/sharness/t0170-dht.sh | 14 ++++++------- 2 files changed, 30 insertions(+), 25 deletions(-) diff --git a/core/commands/dht.go b/core/commands/dht.go index 461ec8cea..8473e53b2 100644 --- a/core/commands/dht.go +++ b/core/commands/dht.go @@ -267,18 +267,18 @@ var provideRefDhtCmd = &cmds.Command{ ctx, cancel := context.WithCancel(req.Context) ctx, events := notif.RegisterForQueryEvents(ctx) + var provideErr error go func() { defer cancel() - var err error if rec { - err = provideKeysRec(ctx, nd.Routing, nd.DAG, cids) + provideErr = provideKeysRec(ctx, nd.Routing, nd.DAG, cids) } else { - err = provideKeys(ctx, nd.Routing, cids) + provideErr = provideKeys(ctx, nd.Routing, cids) } - if err != nil { + if provideErr != nil { notif.PublishQueryEvent(ctx, ¬if.QueryEvent{ Type: notif.QueryError, - Extra: err.Error(), + Extra: provideErr.Error(), }) } }() @@ -289,7 +289,7 @@ var provideRefDhtCmd = &cmds.Command{ } } - return nil + return provideErr }, Encoders: cmds.EncoderMap{ cmds.Text: cmds.MakeTypedEncoder(func(req *cmds.Request, w io.Writer, out *notif.QueryEvent) error { @@ -376,13 +376,15 @@ var findPeerDhtCmd = &cmds.Command{ ctx, cancel := context.WithCancel(req.Context) ctx, events := notif.RegisterForQueryEvents(ctx) + var findPeerErr error go func() { defer cancel() - pi, err := nd.Routing.FindPeer(ctx, pid) - if err != nil { + var pi pstore.PeerInfo + pi, findPeerErr = nd.Routing.FindPeer(ctx, pid) + if findPeerErr != nil { notif.PublishQueryEvent(ctx, ¬if.QueryEvent{ Type: notif.QueryError, - Extra: err.Error(), + Extra: findPeerErr.Error(), }) return } @@ -399,7 +401,7 @@ var findPeerDhtCmd = &cmds.Command{ } } - return nil + return findPeerErr }, Encoders: cmds.EncoderMap{ cmds.Text: cmds.MakeTypedEncoder(func(req *cmds.Request, w io.Writer, out *notif.QueryEvent) error { @@ -458,13 +460,15 @@ Different key types can specify other 'best' rules. ctx, cancel := context.WithCancel(req.Context) ctx, events := notif.RegisterForQueryEvents(ctx) + var getErr error go func() { defer cancel() - val, err := nd.Routing.GetValue(ctx, dhtkey) - if err != nil { + var val []byte + val, getErr = nd.Routing.GetValue(ctx, dhtkey) + if getErr != nil { notif.PublishQueryEvent(ctx, ¬if.QueryEvent{ Type: notif.QueryError, - Extra: err.Error(), + Extra: getErr.Error(), }) } else { notif.PublishQueryEvent(ctx, ¬if.QueryEvent{ @@ -480,7 +484,7 @@ Different key types can specify other 'best' rules. } } - return nil + return getErr }, Encoders: cmds.EncoderMap{ cmds.Text: cmds.MakeTypedEncoder(func(req *cmds.Request, w io.Writer, out *notif.QueryEvent) error { @@ -552,13 +556,14 @@ NOTE: A value may not exceed 2048 bytes. ctx, cancel := context.WithCancel(req.Context) ctx, events := notif.RegisterForQueryEvents(ctx) + var putErr error go func() { defer cancel() - err := nd.Routing.PutValue(ctx, key, []byte(data)) - if err != nil { + putErr = nd.Routing.PutValue(ctx, key, []byte(data)) + if putErr != nil { notif.PublishQueryEvent(ctx, ¬if.QueryEvent{ Type: notif.QueryError, - Extra: err.Error(), + Extra: putErr.Error(), }) } }() @@ -569,7 +574,7 @@ NOTE: A value may not exceed 2048 bytes. } } - return nil + return putErr }, Encoders: cmds.EncoderMap{ cmds.Text: cmds.MakeTypedEncoder(func(req *cmds.Request, w io.Writer, out *notif.QueryEvent) error { diff --git a/test/sharness/t0170-dht.sh b/test/sharness/t0170-dht.sh index 6a1a0ed0b..01a2238fe 100755 --- a/test/sharness/t0170-dht.sh +++ b/test/sharness/t0170-dht.sh @@ -51,15 +51,15 @@ test_dht() { test_fsh cat putted ' - test_expect_failure 'put with bad keys returns error (issue #4611)' ' - ! ipfsi 0 dht put "foo" "bar" && - ! ipfsi 0 dht put "/pk/foo" "bar" && - ! ipfsi 0 dht put "/ipns/foo" "bar" + test_expect_success 'put with bad keys returns error (issue #4611)' ' + test_must_fail ipfsi 0 dht put "foo" "bar" && + test_must_fail ipfsi 0 dht put "/pk/foo" "bar" && + test_must_fail ipfsi 0 dht put "/ipns/foo" "bar" ' - test_expect_failure 'get with bad keys (issue #4611)' ' - ! ipfsi 0 dht get "foo" && - ! ipfsi 0 dht get "/pk/foo" + test_expect_success 'get with bad keys (issue #4611)' ' + test_must_fail ipfsi 0 dht get "foo" && + test_must_fail ipfsi 0 dht get "/pk/foo" ' test_expect_success "add a ref so we can find providers for it" ' From ae889b0b17a19d3d7d42d3d0a6cca5a0640b1511 Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Fri, 1 Mar 2019 18:00:08 -0800 Subject: [PATCH 2/2] gx: update routing helpers License: MIT Signed-off-by: Steven Allen --- core/core.go | 4 ++-- package.json | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/core/core.go b/core/core.go index c5fbfe4c1..9c5ee6030 100644 --- a/core/core.go +++ b/core/core.go @@ -34,8 +34,7 @@ import ( merkledag "gx/ipfs/QmPJNbVw8o3ohC43ppSXyNXwYKsWShG4zygnirHptfbHri/go-merkledag" quic "gx/ipfs/QmQ4hhhYzrEoyPxcVQyBqhf3sshsATKX3D3VJUAGuHzaSD/go-libp2p-quic-transport" resolver "gx/ipfs/QmQAgv6Gaoe2tQpcabqwKXKChp2MZ7i3UXv9DqTTaxCaTR/go-path/resolver" - rhelpers "gx/ipfs/QmRCrPXk2oUwpK1Cj2FXrUotRpddUxz56setkny2gz13Cx/go-libp2p-routing-helpers" - psrouter "gx/ipfs/QmRj3VMHa484MktgWaWr4KYys9AtxBBiFUhhEFKs9EvPiw/go-libp2p-pubsub-router" + psrouter "gx/ipfs/QmQtcp7emCLDbJqfn5YnXJQxmP2n7EqiwCHTx4DMKZSBuw/go-libp2p-pubsub-router" libp2p "gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p" discovery "gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/discovery" p2pbhost "gx/ipfs/QmRxk6AUaGaKCfzS1xSNRojiAPd7h2ih8GuCdjJBF3Y6GK/go-libp2p/p2p/host/basic" @@ -58,6 +57,7 @@ import ( exchange "gx/ipfs/QmWokDcQdSZCxrNxgaRzQDDBofALhActzNBaxRLtiRkUHg/go-ipfs-exchange-interface" ifconnmgr "gx/ipfs/QmXa6sgzUvP5bgF5CyyV36bZYv5VDRwttggQYUPvFybLVd/go-libp2p-interface-connmgr" bstore "gx/ipfs/QmXjKkjMDTtXAiLBwstVexofB8LeruZmE2eBd85GwGFFLA/go-ipfs-blockstore" + rhelpers "gx/ipfs/QmXwV9RskR8vpoYWu9bvKAeAWaBKyxEsEiM9yy6ezbpNBm/go-libp2p-routing-helpers" peer "gx/ipfs/QmYVXrKrKHDC9FobgmcmshCDyWwdrfwfanNQN4oxJ9Fk3h/go-libp2p-peer" p2phost "gx/ipfs/QmYrWiWM4qtrnCeT3R14jY3ZZyirDNJgwK57q4qFYePgbd/go-libp2p-host" routing "gx/ipfs/QmYxUdYY9S6yg5tSPVin5GFTvtfsLauVcr7reHDD3dM8xf/go-libp2p-routing" diff --git a/package.json b/package.json index da143639f..2f7253a5d 100644 --- a/package.json +++ b/package.json @@ -459,15 +459,15 @@ }, { "author": "stebalien", - "hash": "QmRj3VMHa484MktgWaWr4KYys9AtxBBiFUhhEFKs9EvPiw", + "hash": "QmQtcp7emCLDbJqfn5YnXJQxmP2n7EqiwCHTx4DMKZSBuw", "name": "go-libp2p-pubsub-router", - "version": "0.5.16" + "version": "0.5.17" }, { "author": "Stebalien", - "hash": "QmRCrPXk2oUwpK1Cj2FXrUotRpddUxz56setkny2gz13Cx", + "hash": "QmXwV9RskR8vpoYWu9bvKAeAWaBKyxEsEiM9yy6ezbpNBm", "name": "go-libp2p-routing-helpers", - "version": "0.3.19" + "version": "0.4.0" }, { "author": "fsnotify",