Skip to content

Commit fe3106f

Browse files
authored
feat(config): expose ProviderSearchMaxResults (#10773)
Replacing hardcoded integer with named default and expose config option for adjusting it, like we do in Rainbow https://github.com/ipfs/kubo/pull/10765/files#r2025455848
1 parent ee7fef2 commit fe3106f

File tree

4 files changed

+22
-12
lines changed

4 files changed

+22
-12
lines changed

Diff for: config/internal.go

+1
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,6 @@ type InternalBitswap struct {
1414
EngineTaskWorkerCount OptionalInteger
1515
MaxOutstandingBytesPerPeer OptionalInteger
1616
ProviderSearchDelay OptionalDuration
17+
ProviderSearchMaxResults OptionalInteger
1718
WantHaveReplaceSize OptionalInteger
1819
}

Diff for: core/node/bitswap.go

+6-3
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ const (
2828
DefaultEngineTaskWorkerCount = 8
2929
DefaultMaxOutstandingBytesPerPeer = 1 << 20
3030
DefaultProviderSearchDelay = 1000 * time.Millisecond
31+
DefaultMaxProviders = 10 // matching BitswapClientDefaultMaxProviders from https://github.com/ipfs/boxo/blob/v0.29.1/bitswap/internal/defaults/defaults.go#L15
3132
DefaultWantHaveReplaceSize = 1024
3233
)
3334

@@ -79,11 +80,13 @@ func Bitswap(provide bool) interface{} {
7980

8081
var provider routing.ContentDiscovery
8182
if provide {
82-
// We need to hardcode the default because it is an
83-
// internal setting in boxo.
83+
var maxProviders int = DefaultMaxProviders
84+
if in.Cfg.Internal.Bitswap != nil {
85+
maxProviders = int(in.Cfg.Internal.Bitswap.ProviderSearchMaxResults.WithDefault(DefaultMaxProviders))
86+
}
8487
pqm, err := rpqm.New(bitswapNetwork,
8588
in.Rt,
86-
rpqm.WithMaxProviders(10),
89+
rpqm.WithMaxProviders(maxProviders),
8790
rpqm.WithIgnoreProviders(in.Cfg.Routing.IgnoreProviders...),
8891
)
8992
if err != nil {

Diff for: docs/changelogs/v0.35.md

+4-6
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ This release was brought to you by the [Shipyard](http://ipshipyard.com/) team.
1111
- [Overview](#overview)
1212
- [🔦 Highlights](#-highlights)
1313
- [Dedicated `Reprovider.Strategy` for MFS](#dedicated-reproviderstrategy-for-mfs)
14-
- [`Routing.IgnoreProviders`](#routingignoreproviders)
14+
- [Additional new configuration options](#additional-new-configuration-options)
1515
- [Grid view in WebUI](#grid-view-in-webui)
1616
- [📦️ Important dependency updates](#-important-dependency-updates)
1717
- [📝 Changelog](#-changelog)
@@ -31,12 +31,10 @@ Users relying on the `pinned` strategy can switch to `pinned+mfs` and use MFS al
3131

3232
See [`Reprovider.Strategy`](https://github.com/ipfs/kubo/blob/master/docs/config.md#reproviderstrategy) for more details.
3333

34-
#### `Routing.IgnoreProviders`
34+
#### Additional new configuration options
3535

36-
This new option allows ignoring specific peer IDs when returned by the content
37-
routing system as providers of content. See the
38-
[documentation](https://github.com/ipfs/kubo/blob/master/docs/config.md#routingignoreproviders)
39-
for for information.
36+
- [`Internal.Bitswap.ProviderSearchMaxResults`](https://github.com/ipfs/kubo/blob/master/docs/config.md##internalbitswapprovidersearchmaxresults) for adjusting the maximum number of providers bitswap client should aim at before it stops searching for new ones.
37+
- [`Routing.IgnoreProviders`](https://github.com/ipfs/kubo/blob/master/docs/config.md#routingignoreproviders) allows ignoring specific peer IDs when returned by the content routing system as providers of content.
4038

4139
#### Grid view in WebUI
4240

Diff for: docs/config.md

+11-3
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@ config file at runtime.
7979
- [`Internal.Bitswap.EngineBlockstoreWorkerCount`](#internalbitswapengineblockstoreworkercount)
8080
- [`Internal.Bitswap.EngineTaskWorkerCount`](#internalbitswapenginetaskworkercount)
8181
- [`Internal.Bitswap.MaxOutstandingBytesPerPeer`](#internalbitswapmaxoutstandingbytesperpeer)
82-
- [`Internal.Bitswap.ProviderSearchDelay`](#internalbitswapprovidersearchdelay)
82+
- [`Internal.Bitswap.ProviderSearchDelay`](#internalbitswapprovidersearchdelay)
83+
- [`Internal.Bitswap.ProviderSearchMaxResults`](#internalbitswapprovidersearchmaxresults)
8384
- [`Internal.UnixFSShardingSizeThreshold`](#internalunixfsshardingsizethreshold)
8485
- [`Ipns`](#ipns)
8586
- [`Ipns.RepublishPeriod`](#ipnsrepublishperiod)
@@ -119,7 +120,7 @@ config file at runtime.
119120
- [`Routing.Type`](#routingtype)
120121
- [`Routing.AcceleratedDHTClient`](#routingaccelerateddhtclient)
121122
- [`Routing.LoopbackAddressesOnLanDHT`](#routingloopbackaddressesonlandht)
122-
- [`Routing.IgnoreProviders`](#routingignoreproviders)
123+
- [`Routing.IgnoreProviders`](#routingignoreproviders)
123124
- [`Routing.Routers`](#routingrouters)
124125
- [`Routing.Routers: Type`](#routingrouters-type)
125126
- [`Routing.Routers: Parameters`](#routingrouters-parameters)
@@ -1181,14 +1182,21 @@ deteriorate the quality provided to less aggressively-wanting peers.
11811182

11821183
Type: `optionalInteger` (byte count, `null` means default which is 1MB)
11831184

1184-
### `Internal.Bitswap.ProviderSearchDelay`
1185+
#### `Internal.Bitswap.ProviderSearchDelay`
11851186

11861187
This parameter determines how long to wait before looking for providers outside of bitswap.
11871188
Other routing systems like the Amino DHT are able to provide results in less than a second, so lowering
11881189
this number will allow faster peers lookups in some cases.
11891190

11901191
Type: `optionalDuration` (`null` means default which is 1s)
11911192

1193+
#### `Internal.Bitswap.ProviderSearchMaxResults`
1194+
1195+
Maximum number of providers bitswap client should aim at before it stops searching for new ones.
1196+
Setting to 0 means unlimited.
1197+
1198+
Type: `optionalInteger` (`null` means default which is 10)
1199+
11921200
### `Internal.UnixFSShardingSizeThreshold`
11931201

11941202
The sharding threshold used internally to decide whether a UnixFS directory should be sharded or not.

0 commit comments

Comments
 (0)