Commit 6bb1d6db authored by Kevin Atkinson's avatar Kevin Atkinson

Add Files API root as best-effort pin.

Closes #2697.  Closes #2698.

License: MIT
Signed-off-by: default avatarKevin Atkinson <k@kevina.org>
parent b6290d00
...@@ -357,16 +357,20 @@ func (t *Batch) Commit() error { ...@@ -357,16 +357,20 @@ func (t *Batch) Commit() error {
// EnumerateChildren will walk the dag below the given root node and add all // EnumerateChildren will walk the dag below the given root node and add all
// unseen children to the passed in set. // unseen children to the passed in set.
// TODO: parallelize to avoid disk latency perf hits? // TODO: parallelize to avoid disk latency perf hits?
func EnumerateChildren(ctx context.Context, ds DAGService, root *Node, set key.KeySet) error { func EnumerateChildren(ctx context.Context, ds DAGService, root *Node, set key.KeySet, bestEffort bool) error {
for _, lnk := range root.Links { for _, lnk := range root.Links {
k := key.Key(lnk.Hash) k := key.Key(lnk.Hash)
if !set.Has(k) { if !set.Has(k) {
set.Add(k) set.Add(k)
child, err := ds.Get(ctx, k) child, err := ds.Get(ctx, k)
if err != nil { if err != nil {
if bestEffort && err == ErrNotFound {
continue
} else {
return err return err
} }
err = EnumerateChildren(ctx, ds, child, set) }
err = EnumerateChildren(ctx, ds, child, set, bestEffort)
if err != nil { if err != nil {
return err return err
} }
......
...@@ -292,7 +292,7 @@ func TestFetchGraph(t *testing.T) { ...@@ -292,7 +292,7 @@ func TestFetchGraph(t *testing.T) {
offline_ds := NewDAGService(bs) offline_ds := NewDAGService(bs)
ks := key.NewKeySet() ks := key.NewKeySet()
err = EnumerateChildren(context.Background(), offline_ds, root, ks) err = EnumerateChildren(context.Background(), offline_ds, root, ks, false)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
...@@ -309,7 +309,7 @@ func TestEnumerateChildren(t *testing.T) { ...@@ -309,7 +309,7 @@ func TestEnumerateChildren(t *testing.T) {
} }
ks := key.NewKeySet() ks := key.NewKeySet()
err = EnumerateChildren(context.Background(), ds, root, ks) err = EnumerateChildren(context.Background(), ds, root, ks, false)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment