Skip to content

Commit 85f8327

Browse files
committed
core/node: prioritize announcing pin roots
1 parent ced4610 commit 85f8327

File tree

7 files changed

+27
-14
lines changed

7 files changed

+27
-14
lines changed

core/node/provider.go

+18-5
Original file line numberDiff line numberDiff line change
@@ -129,11 +129,11 @@ func OnlineProviders(useStrategicProviding bool, reprovideStrategy string, repro
129129
var keyProvider fx.Option
130130
switch reprovideStrategy {
131131
case "all", "":
132-
keyProvider = fx.Provide(provider.NewBlockstoreProvider)
132+
keyProvider = fx.Provide(newProvidingStrategy(false, false))
133133
case "roots":
134-
keyProvider = fx.Provide(pinnedProviderStrategy(true))
134+
keyProvider = fx.Provide(newProvidingStrategy(true, true))
135135
case "pinned":
136-
keyProvider = fx.Provide(pinnedProviderStrategy(false))
136+
keyProvider = fx.Provide(newProvidingStrategy(true, false))
137137
default:
138138
return fx.Error(fmt.Errorf("unknown reprovider strategy %q", reprovideStrategy))
139139
}
@@ -149,13 +149,26 @@ func OfflineProviders() fx.Option {
149149
return fx.Provide(provider.NewNoopProvider)
150150
}
151151

152-
func pinnedProviderStrategy(onlyRoots bool) interface{} {
152+
func newProvidingStrategy(onlyPinned, onlyRoots bool) interface{} {
153153
type input struct {
154154
fx.In
155155
Pinner pin.Pinner
156+
Blockstore blockstore.Blockstore
156157
IPLDFetcher fetcher.Factory `name:"ipldFetcher"`
157158
}
158159
return func(in input) provider.KeyChanFunc {
159-
return provider.NewPinnedProvider(onlyRoots, in.Pinner, in.IPLDFetcher)
160+
if onlyRoots {
161+
return provider.NewPinnedProvider(true, in.Pinner, in.IPLDFetcher)
162+
}
163+
164+
var later provider.KeyChanFunc
165+
if onlyPinned {
166+
later = provider.NewPinnedProvider(false, in.Pinner, in.IPLDFetcher)
167+
} else {
168+
later = provider.NewBlockstoreProvider(in.Blockstore)
169+
}
170+
171+
roots := provider.NewPinnedProvider(true, in.Pinner, in.IPLDFetcher)
172+
return provider.NewPrioritizedProvider(roots, later)
160173
}
161174
}

docs/examples/kubo-as-a-library/go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ toolchain go1.22.0
99
replace github.com/ipfs/kubo => ./../../..
1010

1111
require (
12-
github.com/ipfs/boxo v0.18.0
12+
github.com/ipfs/boxo v0.18.1-0.20240326133006-437a27bdfb8c
1313
github.com/ipfs/kubo v0.0.0-00010101000000-000000000000
1414
github.com/libp2p/go-libp2p v0.33.0
1515
github.com/multiformats/go-multiaddr v0.12.2

docs/examples/kubo-as-a-library/go.sum

+2-2
Original file line numberDiff line numberDiff line change
@@ -266,8 +266,8 @@ github.com/ipfs-shipyard/nopfs/ipfs v0.13.2-0.20231027223058-cde3b5ba964c h1:7Uy
266266
github.com/ipfs-shipyard/nopfs/ipfs v0.13.2-0.20231027223058-cde3b5ba964c/go.mod h1:6EekK/jo+TynwSE/ZOiOJd4eEvRXoavEC3vquKtv4yI=
267267
github.com/ipfs/bbloom v0.0.4 h1:Gi+8EGJ2y5qiD5FbsbpX/TMNcJw8gSqr7eyjHa4Fhvs=
268268
github.com/ipfs/bbloom v0.0.4/go.mod h1:cS9YprKXpoZ9lT0n/Mw/a6/aFV6DTjTLYHeA+gyqMG0=
269-
github.com/ipfs/boxo v0.18.0 h1:MOL9/AgoV3e7jlVMInicaSdbgralfqSsbkc31dZ9tmw=
270-
github.com/ipfs/boxo v0.18.0/go.mod h1:pIZgTWdm3k3pLF9Uq6MB8JEcW07UDwNJjlXW1HELW80=
269+
github.com/ipfs/boxo v0.18.1-0.20240326133006-437a27bdfb8c h1:E7MgskctcqNZXoOdm0VVxKxt/aAmIBsgNV7rttrywUE=
270+
github.com/ipfs/boxo v0.18.1-0.20240326133006-437a27bdfb8c/go.mod h1:V5gJzbIMwKEXrg3IdvAxIdF7UPgU4RsXmNGS8MQ/0D4=
271271
github.com/ipfs/go-bitfield v1.1.0 h1:fh7FIo8bSwaJEh6DdTWbCeZ1eqOaOkKFI74SCnsWbGA=
272272
github.com/ipfs/go-bitfield v1.1.0/go.mod h1:paqf1wjq/D2BBmzfTVFlJQ9IlFOZpg422HL0HqsGWHU=
273273
github.com/ipfs/go-block-format v0.0.3/go.mod h1:4LmD4ZUw0mhO+JSKdpWwrzATiEfM7WWgQ8H5l6P8MVk=

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ require (
1717
github.com/hashicorp/go-multierror v1.1.1
1818
github.com/ipfs-shipyard/nopfs v0.0.12
1919
github.com/ipfs-shipyard/nopfs/ipfs v0.13.2-0.20231027223058-cde3b5ba964c
20-
github.com/ipfs/boxo v0.18.0
20+
github.com/ipfs/boxo v0.18.1-0.20240326133006-437a27bdfb8c
2121
github.com/ipfs/go-block-format v0.2.0
2222
github.com/ipfs/go-cid v0.4.1
2323
github.com/ipfs/go-cidutil v0.1.0

go.sum

+2-2
Original file line numberDiff line numberDiff line change
@@ -329,8 +329,8 @@ github.com/ipfs-shipyard/nopfs/ipfs v0.13.2-0.20231027223058-cde3b5ba964c h1:7Uy
329329
github.com/ipfs-shipyard/nopfs/ipfs v0.13.2-0.20231027223058-cde3b5ba964c/go.mod h1:6EekK/jo+TynwSE/ZOiOJd4eEvRXoavEC3vquKtv4yI=
330330
github.com/ipfs/bbloom v0.0.4 h1:Gi+8EGJ2y5qiD5FbsbpX/TMNcJw8gSqr7eyjHa4Fhvs=
331331
github.com/ipfs/bbloom v0.0.4/go.mod h1:cS9YprKXpoZ9lT0n/Mw/a6/aFV6DTjTLYHeA+gyqMG0=
332-
github.com/ipfs/boxo v0.18.0 h1:MOL9/AgoV3e7jlVMInicaSdbgralfqSsbkc31dZ9tmw=
333-
github.com/ipfs/boxo v0.18.0/go.mod h1:pIZgTWdm3k3pLF9Uq6MB8JEcW07UDwNJjlXW1HELW80=
332+
github.com/ipfs/boxo v0.18.1-0.20240326133006-437a27bdfb8c h1:E7MgskctcqNZXoOdm0VVxKxt/aAmIBsgNV7rttrywUE=
333+
github.com/ipfs/boxo v0.18.1-0.20240326133006-437a27bdfb8c/go.mod h1:V5gJzbIMwKEXrg3IdvAxIdF7UPgU4RsXmNGS8MQ/0D4=
334334
github.com/ipfs/go-bitfield v1.1.0 h1:fh7FIo8bSwaJEh6DdTWbCeZ1eqOaOkKFI74SCnsWbGA=
335335
github.com/ipfs/go-bitfield v1.1.0/go.mod h1:paqf1wjq/D2BBmzfTVFlJQ9IlFOZpg422HL0HqsGWHU=
336336
github.com/ipfs/go-bitswap v0.11.0 h1:j1WVvhDX1yhG32NTC9xfxnqycqYIlhzEzLXG/cU1HyQ=

test/dependencies/go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ require (
105105
github.com/hexops/gotextdiff v1.0.3 // indirect
106106
github.com/inconshreveable/mousetrap v1.1.0 // indirect
107107
github.com/ipfs/bbloom v0.0.4 // indirect
108-
github.com/ipfs/boxo v0.18.0 // indirect
108+
github.com/ipfs/boxo v0.18.1-0.20240326133006-437a27bdfb8c // indirect
109109
github.com/ipfs/go-block-format v0.2.0 // indirect
110110
github.com/ipfs/go-cid v0.4.1 // indirect
111111
github.com/ipfs/go-datastore v0.6.0 // indirect

test/dependencies/go.sum

+2-2
Original file line numberDiff line numberDiff line change
@@ -362,8 +362,8 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2
362362
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
363363
github.com/ipfs/bbloom v0.0.4 h1:Gi+8EGJ2y5qiD5FbsbpX/TMNcJw8gSqr7eyjHa4Fhvs=
364364
github.com/ipfs/bbloom v0.0.4/go.mod h1:cS9YprKXpoZ9lT0n/Mw/a6/aFV6DTjTLYHeA+gyqMG0=
365-
github.com/ipfs/boxo v0.18.0 h1:MOL9/AgoV3e7jlVMInicaSdbgralfqSsbkc31dZ9tmw=
366-
github.com/ipfs/boxo v0.18.0/go.mod h1:pIZgTWdm3k3pLF9Uq6MB8JEcW07UDwNJjlXW1HELW80=
365+
github.com/ipfs/boxo v0.18.1-0.20240326133006-437a27bdfb8c h1:E7MgskctcqNZXoOdm0VVxKxt/aAmIBsgNV7rttrywUE=
366+
github.com/ipfs/boxo v0.18.1-0.20240326133006-437a27bdfb8c/go.mod h1:V5gJzbIMwKEXrg3IdvAxIdF7UPgU4RsXmNGS8MQ/0D4=
367367
github.com/ipfs/go-block-format v0.2.0 h1:ZqrkxBA2ICbDRbK8KJs/u0O3dlp6gmAuuXUJNiW1Ycs=
368368
github.com/ipfs/go-block-format v0.2.0/go.mod h1:+jpL11nFx5A/SPpsoBn6Bzkra/zaArfSmsknbPMYgzM=
369369
github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s=

0 commit comments

Comments
 (0)