Skip to content

Commit f538d1f

Browse files
committed
feat(routing/providerquerymanager): allow for configurable WithMaxProviders option
1 parent 96d7d64 commit f538d1f

2 files changed

Lines changed: 13 additions & 3 deletions

File tree

bitswap/client/client.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ func New(parent context.Context, network bsnet.BitSwapNetwork, bstore blockstore
170170
var defaultQueryManager *rpqm.ProviderQueryManager
171171
if bs.useDefaultLookupManagement {
172172
var err error
173-
defaultQueryManager, err = rpqm.New(ctx, network)
173+
defaultQueryManager, err = rpqm.New(ctx, network, rpqm.WithMaxProviders(10))
174174
if err != nil {
175175
// Should not be possible to hit this
176176
panic(err)

routing/providerquerymanager/providerquerymanager.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ import (
1616
var log = logging.Logger("routing/provqrymgr")
1717

1818
const (
19-
maxProviders = 10
2019
defaultMaxInProcessRequests = 6
20+
defaultMaxProviders = 0
2121
defaultTimeout = 10 * time.Second
2222
)
2323

@@ -85,6 +85,7 @@ type ProviderQueryManager struct {
8585
findProviderTimeout time.Duration
8686
timeoutMutex sync.RWMutex
8787

88+
maxProviders int
8889
maxInProcessRequests int
8990

9091
// do not touch outside the run loop
@@ -108,6 +109,14 @@ func WithMaxInProcessRequests(count int) Option {
108109
}
109110
}
110111

112+
// WithMaxProviders is the maximum number of providers that will be looked up per query
113+
func WithMaxProviders(count int) Option {
114+
return func(mgr *ProviderQueryManager) error {
115+
mgr.maxProviders = count
116+
return nil
117+
}
118+
}
119+
111120
// New initializes a new ProviderQueryManager for a given context and a given
112121
// network provider.
113122
func New(ctx context.Context, network ProviderQueryNetwork, opts ...Option) (*ProviderQueryManager, error) {
@@ -120,6 +129,7 @@ func New(ctx context.Context, network ProviderQueryNetwork, opts ...Option) (*Pr
120129
inProgressRequestStatuses: make(map[cid.Cid]*inProgressRequestStatus),
121130
findProviderTimeout: defaultTimeout,
122131
maxInProcessRequests: defaultMaxInProcessRequests,
132+
maxProviders: defaultMaxProviders,
123133
}
124134

125135
for _, o := range opts {
@@ -275,7 +285,7 @@ func (pqm *ProviderQueryManager) findProviderWorker() {
275285
pqm.timeoutMutex.RUnlock()
276286
span := trace.SpanFromContext(findProviderCtx)
277287
span.AddEvent("StartFindProvidersAsync")
278-
providers := pqm.network.FindProvidersAsync(findProviderCtx, k, maxProviders)
288+
providers := pqm.network.FindProvidersAsync(findProviderCtx, k, pqm.maxProviders)
279289
wg := &sync.WaitGroup{}
280290
for p := range providers {
281291
wg.Add(1)

0 commit comments

Comments
 (0)