@cryptotaxi247 / kubo / commits / d32177cda

Make sure ctx in commands are derived from req.Context

License: MIT Signed-off-by: rht <rhtbot@gmail.com>

rht committed Aug 16, 2015 at 18:22 UTC d32177cda06d1ae5988f657711d8fa8d0887c0ab
13 files changed +34 -62
assets/assets.go
+1 -1
@@ -54,7 +54,7 @@ func addAssetList(nd *core.IpfsNode, l []string) (*key.Key, error) {
54
55 fname := filepath.Base(p)
56 k := key.B58KeyDecode(s)
57 - if err := dirb.AddChild(fname, k); err != nil {
57 + if err := dirb.AddChild(nd.Context(), fname, k); err != nil {
58 return nil, fmt.Errorf("assets: could not add '%s' as a child: %s", fname, err)
59 }
60 }
commands/http/client.go
+1 -2
@@ -51,8 +51,7 @@ func (c *client) Send(req cmds.Request) (cmds.Response, error) {
51
52 if req.Context() == nil {
53 log.Warningf("no context set in request")
54 - err := req.SetRootContext(context.TODO())
55 - if err != nil {
54 + if err := req.SetRootContext(context.TODO()); err != nil {
55 return nil, err
56 }
57 }
core/commands/swarm.go
+1 -2
@@ -15,7 +15,6 @@ import (
15
16 ma "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
17 mafilter "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/whyrusleeping/multiaddr-filter"
18 - context "github.com/ipfs/go-ipfs/Godeps/_workspace/src/golang.org/x/net/context"
18 )
19
20 type stringList struct {
@@ -211,7 +210,7 @@ ipfs swarm connect /ip4/104.131.131.82/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3
210 cmds.StringArg("address", true, true, "address of peer to connect to").EnableStdin(),
211 },
212 Run: func(req cmds.Request, res cmds.Response) {
214 - ctx := context.TODO()
213 + ctx := req.Context()
214
215 n, err := req.InvocContext().GetNode()
216 if err != nil {
core/core.go
+4 -1
@@ -320,7 +320,7 @@ func setupDiscoveryOption(d config.Discovery) DiscoveryOption {
320
321 func (n *IpfsNode) HandlePeerFound(p peer.PeerInfo) {
322 log.Warning("trying peer info: ", p)
323 - ctx, _ := context.WithTimeout(context.TODO(), time.Second*10)
323 + ctx, _ := context.WithTimeout(n.Context(), time.Second*10)
324 err := n.PeerHost.Connect(ctx, p)
325 if err != nil {
326 log.Warning("Failed to connect to peer found by discovery: ", err)
@@ -367,6 +367,9 @@ func (n *IpfsNode) Close() error {
367
368 // Context returns the IpfsNode context
369 func (n *IpfsNode) Context() context.Context {
370 + if n.ctx == nil {
371 + n.ctx = context.TODO()
372 + }
373 return n.ctx
374 }
375
core/coreunix/add.go
+9 -27
@@ -66,8 +66,7 @@ func AddR(n *core.IpfsNode, root string) (key string, err error) {
66 }
67
68 n.Pinning.GetManual().RemovePinWithMode(k, pin.Indirect)
69 - err = n.Pinning.Flush()
70 - if err != nil {
69 + if err := n.Pinning.Flush(); err != nil {
70 return "", err
71 }
72
@@ -95,43 +94,28 @@ func AddWrapped(n *core.IpfsNode, r io.Reader, filename string) (string, *merkle
94 func add(n *core.IpfsNode, reader io.Reader) (*merkledag.Node, error) {
95 mp := n.Pinning.GetManual()
96
98 - node, err := importer.BuildDagFromReader(
97 + return importer.BuildDagFromReader(
98 n.DAG,
99 chunk.DefaultSplitter(reader),
100 importer.PinIndirectCB(mp),
101 )
103 - if err != nil {
104 - return nil, err
105 - }
106 -
107 - return node, nil
102 }
103
104 func addNode(n *core.IpfsNode, node *merkledag.Node) error {
111 - err := n.DAG.AddRecursive(node) // add the file to the graph + local storage
112 - if err != nil {
105 + if err := n.DAG.AddRecursive(node); err != nil { // add the file to the graph + local storage
106 return err
107 }
115 - ctx, cancel := context.WithTimeout(context.TODO(), time.Minute)
108 + ctx, cancel := context.WithTimeout(n.Context(), time.Minute)
109 defer cancel()
117 - err = n.Pinning.Pin(ctx, node, true) // ensure we keep it
118 - if err != nil {
119 - return err
120 - }
121 - return nil
110 + err := n.Pinning.Pin(ctx, node, true) // ensure we keep it
111 + return err
112 }
113
114 func addFile(n *core.IpfsNode, file files.File) (*merkledag.Node, error) {
115 if file.IsDirectory() {
116 return addDir(n, file)
117 }
128 -
129 - dagnode, err := add(n, file)
130 - if err != nil {
131 - return nil, err
132 - }
133 -
134 - return dagnode, nil
118 + return add(n, file)
119 }
120
121 func addDir(n *core.IpfsNode, dir files.File) (*merkledag.Node, error) {
@@ -155,14 +139,12 @@ Loop:
139
140 _, name := gopath.Split(file.FileName())
141
158 - err = tree.AddNodeLink(name, node)
159 - if err != nil {
142 + if err := tree.AddNodeLink(name, node); err != nil {
143 return nil, err
144 }
145 }
146
164 - err := addNode(n, tree)
165 - if err != nil {
147 + if err := addNode(n, tree); err != nil {
148 return nil, err
149 }
150 return tree, nil
core/coreunix/metadata.go
+2 -2
@@ -14,7 +14,7 @@ import (
14 func AddMetadataTo(n *core.IpfsNode, skey string, m *ft.Metadata) (string, error) {
15 ukey := key.B58KeyDecode(skey)
16
17 - ctx, cancel := context.WithTimeout(context.TODO(), time.Minute)
17 + ctx, cancel := context.WithTimeout(n.Context(), time.Minute)
18 defer cancel()
19 nd, err := n.DAG.Get(ctx, ukey)
20 if err != nil {
@@ -44,7 +44,7 @@ func AddMetadataTo(n *core.IpfsNode, skey string, m *ft.Metadata) (string, error
44 func Metadata(n *core.IpfsNode, skey string) (*ft.Metadata, error) {
45 ukey := key.B58KeyDecode(skey)
46
47 - ctx, cancel := context.WithTimeout(context.TODO(), time.Minute)
47 + ctx, cancel := context.WithTimeout(n.Context(), time.Minute)
48 defer cancel()
49 nd, err := n.DAG.Get(ctx, ukey)
50 if err != nil {
fuse/ipns/common.go
+1 -1
@@ -22,7 +22,7 @@ func InitializeKeyspace(n *core.IpfsNode, key ci.PrivKey) error {
22 return err
23 }
24
25 - ctx, cancel := context.WithTimeout(context.TODO(), time.Minute)
25 + ctx, cancel := context.WithTimeout(n.Context(), time.Minute)
26 defer cancel()
27
28 err = n.Pinning.Pin(ctx, emptyDir, false)
importer/trickle/trickledag.go
+1 -2
@@ -108,8 +108,7 @@ func TrickleAppend(base *dag.Node, db *h.DagBuilderHelper) (out *dag.Node, err_o
108 }
109
110 // Last child in this node may not be a full tree, lets file it up
111 - err = appendFillLastChild(ufsn, n-1, layerProgress, db)
112 - if err != nil {
111 + if err := appendFillLastChild(ufsn, n-1, layerProgress, db); err != nil {
112 return nil, err
113 }
114
ipnsfs/dir.go
+6 -4
@@ -26,12 +26,14 @@ type Directory struct {
26
27 lock sync.Mutex
28 node *dag.Node
29 + ctx context.Context
30
31 name string
32 }
33
33 -func NewDirectory(name string, node *dag.Node, parent childCloser, fs *Filesystem) *Directory {
34 +func NewDirectory(ctx context.Context, name string, node *dag.Node, parent childCloser, fs *Filesystem) *Directory {
35 return &Directory{
36 + ctx: ctx,
37 fs: fs,
38 name: name,
39 node: node,
@@ -121,7 +123,7 @@ func (d *Directory) childDir(name string) (*Directory, error) {
123
124 switch i.GetType() {
125 case ufspb.Data_Directory:
124 - ndir := NewDirectory(name, nd, d, d.fs)
126 + ndir := NewDirectory(d.ctx, name, nd, d, d.fs)
127 d.childDirs[name] = ndir
128 return ndir, nil
129 case ufspb.Data_File:
@@ -138,7 +140,7 @@ func (d *Directory) childDir(name string) (*Directory, error) {
140 func (d *Directory) childFromDag(name string) (*dag.Node, error) {
141 for _, lnk := range d.node.Links {
142 if lnk.Name == name {
141 - ctx, cancel := context.WithTimeout(context.TODO(), time.Minute)
143 + ctx, cancel := context.WithTimeout(d.ctx, time.Minute)
144 defer cancel()
145
146 return lnk.GetNode(ctx, d.fs.dserv)
@@ -244,7 +246,7 @@ func (d *Directory) AddChild(name string, nd *dag.Node) error {
246
247 switch pbn.GetType() {
248 case ft.TDirectory:
247 - d.childDirs[name] = NewDirectory(name, nd, d, d.fs)
249 + d.childDirs[name] = NewDirectory(d.ctx, name, nd, d, d.fs)
250 case ft.TFile, ft.TMetadata, ft.TRaw:
251 nfi, err := NewFile(name, nd, d, d.fs)
252 if err != nil {
ipnsfs/system.go
+1 -1
@@ -186,7 +186,7 @@ func (fs *Filesystem) newKeyRoot(parent context.Context, k ci.PrivKey) (*KeyRoot
186
187 switch pbn.GetType() {
188 case ft.TDirectory:
189 - root.val = NewDirectory(pointsTo.String(), mnode, root, fs)
189 + root.val = NewDirectory(ctx, pointsTo.String(), mnode, root, fs)
190 case ft.TFile, ft.TMetadata, ft.TRaw:
191 fi, err := NewFile(pointsTo.String(), mnode, root, fs)
192 if err != nil {
merkledag/utils/utils.go
+1 -2
@@ -48,8 +48,7 @@ func addLink(ctx context.Context, ds dag.DAGService, root *dag.Node, childname s
48 // ensure no link with that name already exists
49 _ = root.RemoveNodeLink(childname) // ignore error, only option is ErrNotFound
50
51 - err = root.AddNodeLinkClean(childname, childnd)
52 - if err != nil {
51 + if err := root.AddNodeLinkClean(childname, childnd); err != nil {
52 return nil, err
53 }
54
unixfs/io/dirbuilder.go
+2 -13
@@ -1,8 +1,6 @@
1 package io
2
3 import (
4 - "time"
5 -
4 "github.com/ipfs/go-ipfs/Godeps/_workspace/src/golang.org/x/net/context"
5
6 key "github.com/ipfs/go-ipfs/blocks/key"
@@ -29,22 +27,13 @@ func NewDirectory(dserv mdag.DAGService) *directoryBuilder {
27 }
28
29 // AddChild adds a (name, key)-pair to the root node.
32 -func (d *directoryBuilder) AddChild(name string, k key.Key) error {
33 - // TODO(cryptix): consolidate context managment
34 - ctx, cancel := context.WithTimeout(context.TODO(), time.Minute)
35 - defer cancel()
36 -
30 +func (d *directoryBuilder) AddChild(ctx context.Context, name string, k key.Key) error {
31 cnode, err := d.dserv.Get(ctx, k)
32 if err != nil {
33 return err
34 }
35
42 - err = d.dirnode.AddNodeLinkClean(name, cnode)
43 - if err != nil {
44 - return err
45 - }
46 -
47 - return nil
36 + return d.dirnode.AddNodeLinkClean(name, cnode)
37 }
38
39 // GetNode returns the root of this directoryBuilder
unixfs/mod/dagmodifier.go
+4 -4
@@ -428,7 +428,7 @@ func (dm *DagModifier) Truncate(size int64) error {
428 return dm.expandSparse(int64(size) - realSize)
429 }
430
431 - nnode, err := dagTruncate(dm.curNode, uint64(size), dm.dagserv)
431 + nnode, err := dagTruncate(dm.ctx, dm.curNode, uint64(size), dm.dagserv)
432 if err != nil {
433 return err
434 }
@@ -443,7 +443,7 @@ func (dm *DagModifier) Truncate(size int64) error {
443 }
444
445 // dagTruncate truncates the given node to 'size' and returns the modified Node
446 -func dagTruncate(nd *mdag.Node, size uint64, ds mdag.DAGService) (*mdag.Node, error) {
446 +func dagTruncate(ctx context.Context, nd *mdag.Node, size uint64, ds mdag.DAGService) (*mdag.Node, error) {
447 if len(nd.Links) == 0 {
448 // TODO: this can likely be done without marshaling and remarshaling
449 pbn, err := ft.FromBytes(nd.Data)
@@ -460,7 +460,7 @@ func dagTruncate(nd *mdag.Node, size uint64, ds mdag.DAGService) (*mdag.Node, er
460 var modified *mdag.Node
461 ndata := new(ft.FSNode)
462 for i, lnk := range nd.Links {
463 - ctx, cancel := context.WithTimeout(context.TODO(), time.Minute)
463 + _ctx, cancel := context.WithTimeout(ctx, time.Minute)
464 defer cancel()
465
466 child, err := lnk.GetNode(ctx, ds)
@@ -475,7 +475,7 @@ func dagTruncate(nd *mdag.Node, size uint64, ds mdag.DAGService) (*mdag.Node, er
475
476 // found the child we want to cut
477 if size < cur+childsize {
478 - nchild, err := dagTruncate(child, size-cur, ds)
478 + nchild, err := dagTruncate(_ctx, child, size-cur, ds)
479 if err != nil {
480 return nil, err
481 }