pacer: fix b2 deadlock by defaulting max connections to unlimited

Before this change, the maximum number of connections was set to 10.

This means that b2 could deadlock while uploading multipart uploads
due to a lock being held longer than it should have been.
This commit is contained in:
Nick Craig-Wood 2023-09-25 11:01:51 +01:00
parent c1df3ce08c
commit 96438ff259
2 changed files with 3 additions and 3 deletions

View file

@ -29,7 +29,7 @@ func NewPacer(ctx context.Context, c pacer.Calculator) *Pacer {
p := &Pacer{
Pacer: pacer.New(
pacer.InvokerOption(pacerInvoker),
pacer.MaxConnectionsOption(ci.Checkers+ci.Transfers),
// pacer.MaxConnectionsOption(ci.Checkers+ci.Transfers),
pacer.RetriesOption(retries),
pacer.CalculatorOption(c),
),

View file

@ -75,7 +75,7 @@ type Paced func() (bool, error)
// New returns a Pacer with sensible defaults.
func New(options ...Option) *Pacer {
opts := pacerOptions{
maxConnections: 10,
maxConnections: 0,
retries: 3,
}
for _, o := range options {
@ -103,7 +103,7 @@ func New(options ...Option) *Pacer {
// SetMaxConnections sets the maximum number of concurrent connections.
// Setting the value to 0 will allow unlimited number of connections.
// Should not be changed once you have started calling the pacer.
// By default this will be set to fs.Config.Checkers.
// By default this will be 0.
func (p *Pacer) SetMaxConnections(n int) {
p.mu.Lock()
defer p.mu.Unlock()