Skip to content

Commit 68c51b8

Browse files
committed
Wire a context down to (n *helpers.UnixfsNode) GetChild
License: MIT Signed-off-by: rht <[email protected]>
1 parent c52e29d commit 68c51b8

File tree

3 files changed

+22
-35
lines changed

3 files changed

+22
-35
lines changed

importer/helpers/helpers.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,8 @@ func (n *UnixfsNode) NumChildren() int {
7777
return n.ufmt.NumChildren()
7878
}
7979

80-
func (n *UnixfsNode) GetChild(i int, ds dag.DAGService) (*UnixfsNode, error) {
81-
ctx, cancel := context.WithTimeout(context.TODO(), time.Minute)
80+
func (n *UnixfsNode) GetChild(ctx context.Context, i int, ds dag.DAGService) (*UnixfsNode, error) {
81+
ctx, cancel := context.WithTimeout(ctx, time.Minute)
8282
defer cancel()
8383

8484
nd, err := n.node.Links[i].GetNode(ctx, ds)

importer/trickle/trickledag.go

+19-32
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,16 @@ const layerRepeat = 4
1818

1919
func TrickleLayout(db *h.DagBuilderHelper) (*dag.Node, error) {
2020
root := h.NewUnixfsNode()
21-
err := db.FillNodeLayer(root)
22-
if err != nil {
21+
if err := db.FillNodeLayer(root); err != nil {
2322
return nil, err
2423
}
2524
for level := 1; !db.Done(); level++ {
2625
for i := 0; i < layerRepeat && !db.Done(); i++ {
2726
next := h.NewUnixfsNode()
28-
err := fillTrickleRec(db, next, level)
29-
if err != nil {
27+
if err := fillTrickleRec(db, next, level); err != nil {
3028
return nil, err
3129
}
32-
err = root.AddChild(next, db)
33-
if err != nil {
30+
if err := root.AddChild(next, db); err != nil {
3431
return nil, err
3532
}
3633
}
@@ -41,8 +38,7 @@ func TrickleLayout(db *h.DagBuilderHelper) (*dag.Node, error) {
4138
return nil, err
4239
}
4340

44-
err = db.Close()
45-
if err != nil {
41+
if err := db.Close(); err != nil {
4642
return nil, err
4743
}
4844

@@ -51,21 +47,18 @@ func TrickleLayout(db *h.DagBuilderHelper) (*dag.Node, error) {
5147

5248
func fillTrickleRec(db *h.DagBuilderHelper, node *h.UnixfsNode, depth int) error {
5349
// Always do this, even in the base case
54-
err := db.FillNodeLayer(node)
55-
if err != nil {
50+
if err := db.FillNodeLayer(node); err != nil {
5651
return err
5752
}
5853

5954
for i := 1; i < depth && !db.Done(); i++ {
6055
for j := 0; j < layerRepeat && !db.Done(); j++ {
6156
next := h.NewUnixfsNode()
62-
err := fillTrickleRec(db, next, i)
63-
if err != nil {
57+
if err := fillTrickleRec(db, next, i); err != nil {
6458
return err
6559
}
6660

67-
err = node.AddChild(next, db)
68-
if err != nil {
61+
if err := node.AddChild(next, db); err != nil {
6962
return err
7063
}
7164
}
@@ -74,11 +67,10 @@ func fillTrickleRec(db *h.DagBuilderHelper, node *h.UnixfsNode, depth int) error
7467
}
7568

7669
// TrickleAppend appends the data in `db` to the dag, using the Trickledag format
77-
func TrickleAppend(base *dag.Node, db *h.DagBuilderHelper) (out *dag.Node, err_out error) {
70+
func TrickleAppend(ctx context.Context, base *dag.Node, db *h.DagBuilderHelper) (out *dag.Node, err_out error) {
7871
defer func() {
7972
if err_out == nil {
80-
err := db.Close()
81-
if err != nil {
73+
if err := db.Close(); err != nil {
8274
err_out = err
8375
}
8476
}
@@ -94,8 +86,7 @@ func TrickleAppend(base *dag.Node, db *h.DagBuilderHelper) (out *dag.Node, err_o
9486
n, layerProgress := trickleDepthInfo(ufsn, db.Maxlinks())
9587
if n == 0 {
9688
// If direct blocks not filled...
97-
err := db.FillNodeLayer(ufsn)
98-
if err != nil {
89+
if err := db.FillNodeLayer(ufsn); err != nil {
9990
return nil, err
10091
}
10192

@@ -108,7 +99,7 @@ func TrickleAppend(base *dag.Node, db *h.DagBuilderHelper) (out *dag.Node, err_o
10899
}
109100

110101
// Last child in this node may not be a full tree, lets file it up
111-
if err := appendFillLastChild(ufsn, n-1, layerProgress, db); err != nil {
102+
if err := appendFillLastChild(ctx, ufsn, n-1, layerProgress, db); err != nil {
112103
return nil, err
113104
}
114105

@@ -138,19 +129,19 @@ func TrickleAppend(base *dag.Node, db *h.DagBuilderHelper) (out *dag.Node, err_o
138129

139130
// appendFillLastChild will take in an incomplete trickledag node (uncomplete meaning, not full) and
140131
// fill it out to the specified depth with blocks from the given DagBuilderHelper
141-
func appendFillLastChild(ufsn *h.UnixfsNode, depth int, layerFill int, db *h.DagBuilderHelper) error {
132+
func appendFillLastChild(ctx context.Context, ufsn *h.UnixfsNode, depth int, layerFill int, db *h.DagBuilderHelper) error {
142133
if ufsn.NumChildren() <= db.Maxlinks() {
143134
return nil
144135
}
145136
// Recursive step, grab last child
146137
last := ufsn.NumChildren() - 1
147-
lastChild, err := ufsn.GetChild(last, db.GetDagServ())
138+
lastChild, err := ufsn.GetChild(ctx, last, db.GetDagServ())
148139
if err != nil {
149140
return err
150141
}
151142

152143
// Fill out last child (may not be full tree)
153-
nchild, err := trickleAppendRec(lastChild, db, depth-1)
144+
nchild, err := trickleAppendRec(ctx, lastChild, db, depth-1)
154145
if err != nil {
155146
return err
156147
}
@@ -182,7 +173,7 @@ func appendFillLastChild(ufsn *h.UnixfsNode, depth int, layerFill int, db *h.Dag
182173
}
183174

184175
// recursive call for TrickleAppend
185-
func trickleAppendRec(ufsn *h.UnixfsNode, db *h.DagBuilderHelper, depth int) (*h.UnixfsNode, error) {
176+
func trickleAppendRec(ctx context.Context, ufsn *h.UnixfsNode, db *h.DagBuilderHelper, depth int) (*h.UnixfsNode, error) {
186177
if depth == 0 || db.Done() {
187178
return ufsn, nil
188179
}
@@ -191,8 +182,7 @@ func trickleAppendRec(ufsn *h.UnixfsNode, db *h.DagBuilderHelper, depth int) (*h
191182
n, layerProgress := trickleDepthInfo(ufsn, db.Maxlinks())
192183
if n == 0 {
193184
// If direct blocks not filled...
194-
err := db.FillNodeLayer(ufsn)
195-
if err != nil {
185+
if err := db.FillNodeLayer(ufsn); err != nil {
196186
return nil, err
197187
}
198188
n++
@@ -203,8 +193,7 @@ func trickleAppendRec(ufsn *h.UnixfsNode, db *h.DagBuilderHelper, depth int) (*h
203193
return ufsn, nil
204194
}
205195

206-
err := appendFillLastChild(ufsn, n, layerProgress, db)
207-
if err != nil {
196+
if err := appendFillLastChild(ctx, ufsn, n, layerProgress, db); err != nil {
208197
return nil, err
209198
}
210199

@@ -217,13 +206,11 @@ func trickleAppendRec(ufsn *h.UnixfsNode, db *h.DagBuilderHelper, depth int) (*h
217206
for i := n; i < depth && !db.Done(); i++ {
218207
for j := 0; j < layerRepeat && !db.Done(); j++ {
219208
next := h.NewUnixfsNode()
220-
err := fillTrickleRec(db, next, i)
221-
if err != nil {
209+
if err := fillTrickleRec(db, next, i); err != nil {
222210
return nil, err
223211
}
224212

225-
err = ufsn.AddChild(next, db)
226-
if err != nil {
213+
if err := ufsn.AddChild(next, db); err != nil {
227214
return nil, err
228215
}
229216
}

unixfs/mod/dagmodifier.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,7 @@ func (dm *DagModifier) appendData(node *mdag.Node, blks <-chan []byte, errs <-ch
312312
NodeCB: imp.BasicPinnerCB(dm.mp),
313313
}
314314

315-
return trickle.TrickleAppend(node, dbp.New(blks, errs))
315+
return trickle.TrickleAppend(dm.ctx, node, dbp.New(blks, errs))
316316
}
317317

318318
// Read data from this dag starting at the current offset

0 commit comments

Comments
 (0)