@@ -16,8 +16,8 @@ import (
1616var log = logging .Logger ("routing/provqrymgr" )
1717
1818const (
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.
113122func 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