Skip to content

Commit 7ecbdbd

Browse files
committed
Make sure ctx in commands are derived from req.Context
License: MIT Signed-off-by: rht <[email protected]>
1 parent da75e92 commit 7ecbdbd

File tree

13 files changed

+34
-62
lines changed

13 files changed

+34
-62
lines changed

assets/assets.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ func addAssetList(nd *core.IpfsNode, l []string) (*key.Key, error) {
5454

5555
fname := filepath.Base(p)
5656
k := key.B58KeyDecode(s)
57-
if err := dirb.AddChild(fname, k); err != nil {
57+
if err := dirb.AddChild(nd.Context(), fname, k); err != nil {
5858
return nil, fmt.Errorf("assets: could not add '%s' as a child: %s", fname, err)
5959
}
6060
}

commands/http/client.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,7 @@ func (c *client) Send(req cmds.Request) (cmds.Response, error) {
5151

5252
if req.Context() == nil {
5353
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 {
5655
return nil, err
5756
}
5857
}

core/commands/swarm.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import (
1515

1616
ma "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
1717
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"
1918
)
2019

2120
type stringList struct {
@@ -211,7 +210,7 @@ ipfs swarm connect /ip4/104.131.131.82/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3
211210
cmds.StringArg("address", true, true, "address of peer to connect to").EnableStdin(),
212211
},
213212
Run: func(req cmds.Request, res cmds.Response) {
214-
ctx := context.TODO()
213+
ctx := req.Context()
215214

216215
n, err := req.InvocContext().GetNode()
217216
if err != nil {

core/core.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ func setupDiscoveryOption(d config.Discovery) DiscoveryOption {
321321

322322
func (n *IpfsNode) HandlePeerFound(p peer.PeerInfo) {
323323
log.Warning("trying peer info: ", p)
324-
ctx, _ := context.WithTimeout(context.TODO(), time.Second*10)
324+
ctx, _ := context.WithTimeout(n.Context(), time.Second*10)
325325
err := n.PeerHost.Connect(ctx, p)
326326
if err != nil {
327327
log.Warning("Failed to connect to peer found by discovery: ", err)
@@ -368,6 +368,9 @@ func (n *IpfsNode) Close() error {
368368

369369
// Context returns the IpfsNode context
370370
func (n *IpfsNode) Context() context.Context {
371+
if n.ctx == nil {
372+
n.ctx = context.TODO()
373+
}
371374
return n.ctx
372375
}
373376

core/coreunix/add.go

+9-27
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,7 @@ func AddR(n *core.IpfsNode, root string) (key string, err error) {
6666
}
6767

6868
n.Pinning.GetManual().RemovePinWithMode(k, pin.Indirect)
69-
err = n.Pinning.Flush()
70-
if err != nil {
69+
if err := n.Pinning.Flush(); err != nil {
7170
return "", err
7271
}
7372

@@ -95,43 +94,28 @@ func AddWrapped(n *core.IpfsNode, r io.Reader, filename string) (string, *merkle
9594
func add(n *core.IpfsNode, reader io.Reader) (*merkledag.Node, error) {
9695
mp := n.Pinning.GetManual()
9796

98-
node, err := importer.BuildDagFromReader(
97+
return importer.BuildDagFromReader(
9998
n.DAG,
10099
chunk.DefaultSplitter(reader),
101100
importer.PinIndirectCB(mp),
102101
)
103-
if err != nil {
104-
return nil, err
105-
}
106-
107-
return node, nil
108102
}
109103

110104
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
113106
return err
114107
}
115-
ctx, cancel := context.WithTimeout(context.TODO(), time.Minute)
108+
ctx, cancel := context.WithTimeout(n.Context(), time.Minute)
116109
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
122112
}
123113

124114
func addFile(n *core.IpfsNode, file files.File) (*merkledag.Node, error) {
125115
if file.IsDirectory() {
126116
return addDir(n, file)
127117
}
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)
135119
}
136120

137121
func addDir(n *core.IpfsNode, dir files.File) (*merkledag.Node, error) {
@@ -155,14 +139,12 @@ Loop:
155139

156140
_, name := gopath.Split(file.FileName())
157141

158-
err = tree.AddNodeLink(name, node)
159-
if err != nil {
142+
if err := tree.AddNodeLink(name, node); err != nil {
160143
return nil, err
161144
}
162145
}
163146

164-
err := addNode(n, tree)
165-
if err != nil {
147+
if err := addNode(n, tree); err != nil {
166148
return nil, err
167149
}
168150
return tree, nil

core/coreunix/metadata.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
func AddMetadataTo(n *core.IpfsNode, skey string, m *ft.Metadata) (string, error) {
1515
ukey := key.B58KeyDecode(skey)
1616

17-
ctx, cancel := context.WithTimeout(context.TODO(), time.Minute)
17+
ctx, cancel := context.WithTimeout(n.Context(), time.Minute)
1818
defer cancel()
1919
nd, err := n.DAG.Get(ctx, ukey)
2020
if err != nil {
@@ -44,7 +44,7 @@ func AddMetadataTo(n *core.IpfsNode, skey string, m *ft.Metadata) (string, error
4444
func Metadata(n *core.IpfsNode, skey string) (*ft.Metadata, error) {
4545
ukey := key.B58KeyDecode(skey)
4646

47-
ctx, cancel := context.WithTimeout(context.TODO(), time.Minute)
47+
ctx, cancel := context.WithTimeout(n.Context(), time.Minute)
4848
defer cancel()
4949
nd, err := n.DAG.Get(ctx, ukey)
5050
if err != nil {

fuse/ipns/common.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ func InitializeKeyspace(n *core.IpfsNode, key ci.PrivKey) error {
2222
return err
2323
}
2424

25-
ctx, cancel := context.WithTimeout(context.TODO(), time.Minute)
25+
ctx, cancel := context.WithTimeout(n.Context(), time.Minute)
2626
defer cancel()
2727

2828
err = n.Pinning.Pin(ctx, emptyDir, false)

importer/trickle/trickledag.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,7 @@ func TrickleAppend(base *dag.Node, db *h.DagBuilderHelper) (out *dag.Node, err_o
108108
}
109109

110110
// 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 {
113112
return nil, err
114113
}
115114

ipnsfs/dir.go

+6-4
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,14 @@ type Directory struct {
2626

2727
lock sync.Mutex
2828
node *dag.Node
29+
ctx context.Context
2930

3031
name string
3132
}
3233

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 {
3435
return &Directory{
36+
ctx: ctx,
3537
fs: fs,
3638
name: name,
3739
node: node,
@@ -121,7 +123,7 @@ func (d *Directory) childDir(name string) (*Directory, error) {
121123

122124
switch i.GetType() {
123125
case ufspb.Data_Directory:
124-
ndir := NewDirectory(name, nd, d, d.fs)
126+
ndir := NewDirectory(d.ctx, name, nd, d, d.fs)
125127
d.childDirs[name] = ndir
126128
return ndir, nil
127129
case ufspb.Data_File:
@@ -138,7 +140,7 @@ func (d *Directory) childDir(name string) (*Directory, error) {
138140
func (d *Directory) childFromDag(name string) (*dag.Node, error) {
139141
for _, lnk := range d.node.Links {
140142
if lnk.Name == name {
141-
ctx, cancel := context.WithTimeout(context.TODO(), time.Minute)
143+
ctx, cancel := context.WithTimeout(d.ctx, time.Minute)
142144
defer cancel()
143145

144146
return lnk.GetNode(ctx, d.fs.dserv)
@@ -244,7 +246,7 @@ func (d *Directory) AddChild(name string, nd *dag.Node) error {
244246

245247
switch pbn.GetType() {
246248
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)
248250
case ft.TFile, ft.TMetadata, ft.TRaw:
249251
nfi, err := NewFile(name, nd, d, d.fs)
250252
if err != nil {

ipnsfs/system.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ func (fs *Filesystem) newKeyRoot(parent context.Context, k ci.PrivKey) (*KeyRoot
186186

187187
switch pbn.GetType() {
188188
case ft.TDirectory:
189-
root.val = NewDirectory(pointsTo.String(), mnode, root, fs)
189+
root.val = NewDirectory(ctx, pointsTo.String(), mnode, root, fs)
190190
case ft.TFile, ft.TMetadata, ft.TRaw:
191191
fi, err := NewFile(pointsTo.String(), mnode, root, fs)
192192
if err != nil {

merkledag/utils/utils.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,7 @@ func addLink(ctx context.Context, ds dag.DAGService, root *dag.Node, childname s
4848
// ensure no link with that name already exists
4949
_ = root.RemoveNodeLink(childname) // ignore error, only option is ErrNotFound
5050

51-
err = root.AddNodeLinkClean(childname, childnd)
52-
if err != nil {
51+
if err := root.AddNodeLinkClean(childname, childnd); err != nil {
5352
return nil, err
5453
}
5554

unixfs/io/dirbuilder.go

+2-13
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package io
22

33
import (
4-
"time"
5-
64
"github.com/ipfs/go-ipfs/Godeps/_workspace/src/golang.org/x/net/context"
75

86
key "github.com/ipfs/go-ipfs/blocks/key"
@@ -29,22 +27,13 @@ func NewDirectory(dserv mdag.DAGService) *directoryBuilder {
2927
}
3028

3129
// 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 {
3731
cnode, err := d.dserv.Get(ctx, k)
3832
if err != nil {
3933
return err
4034
}
4135

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)
4837
}
4938

5039
// GetNode returns the root of this directoryBuilder

unixfs/mod/dagmodifier.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@ func (dm *DagModifier) Truncate(size int64) error {
428428
return dm.expandSparse(int64(size) - realSize)
429429
}
430430

431-
nnode, err := dagTruncate(dm.curNode, uint64(size), dm.dagserv)
431+
nnode, err := dagTruncate(dm.ctx, dm.curNode, uint64(size), dm.dagserv)
432432
if err != nil {
433433
return err
434434
}
@@ -443,7 +443,7 @@ func (dm *DagModifier) Truncate(size int64) error {
443443
}
444444

445445
// 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) {
447447
if len(nd.Links) == 0 {
448448
// TODO: this can likely be done without marshaling and remarshaling
449449
pbn, err := ft.FromBytes(nd.Data)
@@ -460,7 +460,7 @@ func dagTruncate(nd *mdag.Node, size uint64, ds mdag.DAGService) (*mdag.Node, er
460460
var modified *mdag.Node
461461
ndata := new(ft.FSNode)
462462
for i, lnk := range nd.Links {
463-
ctx, cancel := context.WithTimeout(context.TODO(), time.Minute)
463+
_ctx, cancel := context.WithTimeout(ctx, time.Minute)
464464
defer cancel()
465465

466466
child, err := lnk.GetNode(ctx, ds)
@@ -475,7 +475,7 @@ func dagTruncate(nd *mdag.Node, size uint64, ds mdag.DAGService) (*mdag.Node, er
475475

476476
// found the child we want to cut
477477
if size < cur+childsize {
478-
nchild, err := dagTruncate(child, size-cur, ds)
478+
nchild, err := dagTruncate(_ctx, child, size-cur, ds)
479479
if err != nil {
480480
return nil, err
481481
}

0 commit comments

Comments
 (0)