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 e9a95a78de
commit 77dfe5f1fd
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()