@@ -50,16 +50,15 @@ func (pe PoolError) Error() string { return string(pe) }
5050// poolClearedError is an error returned when the connection pool is cleared or currently paused. It
5151// is a retryable error.
5252type poolClearedError struct {
53- err error
54- address address.Address
55- errorLabels []string
53+ err error
54+ address address.Address
5655}
5756
5857func (pce poolClearedError ) Error () string {
59- return fmt .Sprintf (
60- "connection pool for %v was cleared because another operation failed with: %v" ,
61- pce .address ,
62- pce . err )
58+ wrappedErr := fmt .Errorf (
59+ "%v: connection pool for %v was cleared because another operation failed with: %v %w " ,
60+ driver . TransientTransactionError , pce .address , pce . err , pce )
61+ return wrappedErr . Error ( )
6362}
6463
6564// Retryable returns true. All poolClearedErrors are retryable.
@@ -504,7 +503,7 @@ func (p *pool) checkOut(ctx context.Context) (conn *connection, err error) {
504503 }
505504 return nil , ErrPoolClosed
506505 case poolPaused :
507- err := poolClearedError {err : p .lastClearErr , address : p .address , errorLabels : [] string { driver . TransientTransactionError } }
506+ err := poolClearedError {err : p .lastClearErr , address : p .address }
508507 p .stateMu .RUnlock ()
509508
510509 duration := time .Since (start )
@@ -1050,7 +1049,7 @@ func (p *pool) clearImpl(err error, serviceID *bson.ObjectID, interruptAllConnec
10501049 }
10511050
10521051 if serviceID == nil {
1053- pcErr := poolClearedError {err : err , address : p .address , errorLabels : [] string { driver . TransientTransactionError } }
1052+ pcErr := poolClearedError {err : err , address : p .address }
10541053
10551054 // Clear the idle connections wait queue.
10561055 p .idleMu .Lock ()
0 commit comments