Skip to content

Commit bbafe76

Browse files
authored
Merge pull request ipfs/go-ipfs-provider#30 from ipfs/feat/use_ipld_prime
replace go-merkledag with go-fetcher This commit was moved from ipfs/go-ipfs-provider@7463091
2 parents 014a9cd + bb6b14f commit bbafe76

File tree

2 files changed

+20
-12
lines changed

2 files changed

+20
-12
lines changed

provider/simple/reprovide.go

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ import (
99
"github.com/cenkalti/backoff"
1010
"github.com/ipfs/go-cid"
1111
"github.com/ipfs/go-cidutil"
12+
"github.com/ipfs/go-fetcher"
1213
blocks "github.com/ipfs/go-ipfs-blockstore"
13-
ipld "github.com/ipfs/go-ipld-format"
1414
logging "github.com/ipfs/go-log"
15-
"github.com/ipfs/go-merkledag"
1615
"github.com/ipfs/go-verifcid"
16+
cidlink "github.com/ipld/go-ipld-prime/linking/cid"
1717
"github.com/libp2p/go-libp2p-core/routing"
1818
)
1919

@@ -184,9 +184,9 @@ type Pinner interface {
184184
}
185185

186186
// NewPinnedProvider returns provider supplying pinned keys
187-
func NewPinnedProvider(onlyRoots bool, pinning Pinner, dag ipld.DAGService) KeyChanFunc {
187+
func NewPinnedProvider(onlyRoots bool, pinning Pinner, fetchConfig fetcher.FetcherConfig) KeyChanFunc {
188188
return func(ctx context.Context) (<-chan cid.Cid, error) {
189-
set, err := pinSet(ctx, pinning, dag, onlyRoots)
189+
set, err := pinSet(ctx, pinning, fetchConfig, onlyRoots)
190190
if err != nil {
191191
return nil, err
192192
}
@@ -208,7 +208,7 @@ func NewPinnedProvider(onlyRoots bool, pinning Pinner, dag ipld.DAGService) KeyC
208208
}
209209
}
210210

211-
func pinSet(ctx context.Context, pinning Pinner, dag ipld.DAGService, onlyRoots bool) (*cidutil.StreamingSet, error) {
211+
func pinSet(ctx context.Context, pinning Pinner, fetchConfig fetcher.FetcherConfig, onlyRoots bool) (*cidutil.StreamingSet, error) {
212212
set := cidutil.NewStreamingSet()
213213

214214
go func() {
@@ -230,11 +230,18 @@ func pinSet(ctx context.Context, pinning Pinner, dag ipld.DAGService, onlyRoots
230230
logR.Errorf("reprovide indirect pins: %s", err)
231231
return
232232
}
233+
234+
session := fetchConfig.NewSession(ctx)
233235
for _, key := range rkeys {
234-
if onlyRoots {
235-
set.Visitor(ctx)(key)
236-
} else {
237-
err := merkledag.Walk(ctx, merkledag.GetLinksWithDAG(dag), key, set.Visitor(ctx))
236+
set.Visitor(ctx)(key)
237+
if !onlyRoots {
238+
err := fetcher.BlockAll(ctx, session, cidlink.Link{key}, func(res fetcher.FetchResult) error {
239+
clink, ok := res.LastBlockLink.(cidlink.Link)
240+
if ok {
241+
set.Visitor(ctx)(clink.Cid)
242+
}
243+
return nil
244+
})
238245
if err != nil {
239246
logR.Errorf("reprovide indirect pins: %s", err)
240247
return

provider/simple/reprovide_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@ import (
99
"github.com/ipfs/go-cid"
1010
ds "github.com/ipfs/go-datastore"
1111
dssync "github.com/ipfs/go-datastore/sync"
12+
"github.com/ipfs/go-fetcher"
1213
"github.com/ipfs/go-ipfs-blockstore"
1314
offline "github.com/ipfs/go-ipfs-exchange-offline"
1415
mock "github.com/ipfs/go-ipfs-routing/mock"
1516
cbor "github.com/ipfs/go-ipld-cbor"
16-
merkledag "github.com/ipfs/go-merkledag"
17+
_ "github.com/ipld/go-ipld-prime/codec/dagcbor"
1718
peer "github.com/libp2p/go-libp2p-core/peer"
1819
testutil "github.com/libp2p/go-libp2p-testing/net"
1920
mh "github.com/multiformats/go-multihash"
@@ -195,7 +196,7 @@ func TestReprovidePinned(t *testing.T) {
195196

196197
nodes, bstore := setupDag(t)
197198

198-
dag := merkledag.NewDAGService(bsrv.New(bstore, offline.Exchange(bstore)))
199+
fetchConfig := fetcher.NewFetcherConfig(bsrv.New(bstore, offline.Exchange(bstore)))
199200

200201
for i := 0; i < 2; i++ {
201202
clA, clB, idA, _ := setupRouting(t)
@@ -215,7 +216,7 @@ func TestReprovidePinned(t *testing.T) {
215216
keyProvider := NewPinnedProvider(onlyRoots, &mockPinner{
216217
recursive: []cid.Cid{nodes[1]},
217218
direct: []cid.Cid{nodes[3]},
218-
}, dag)
219+
}, fetchConfig)
219220

220221
reprov := NewReprovider(ctx, time.Hour, clA, keyProvider)
221222
err := reprov.Reprovide()

0 commit comments

Comments
 (0)