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
}