Skip to content

Commit 6b50024

Browse files
committed
dialers/retrier: proxy dialers require higher rtt than 100ms
1 parent bf1bd80 commit 6b50024

1 file changed

Lines changed: 13 additions & 13 deletions

File tree

intra/dialers/retrier.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ func calcTimeout(rtt time.Duration) time.Duration {
136136
// These values were chosen to have a <1% false positive rate based on test data.
137137
// False positives trigger an unnecessary retry, which can make connections slower, so they are
138138
// worth avoiding. However, overly long timeouts make retry slower and less useful.
139-
return 400*time.Millisecond + max(2*rtt, 100*time.Millisecond)
139+
return 500*time.Millisecond + min(2*rtt, 100*time.Millisecond)
140140
}
141141

142142
// DialWithSplitRetry returns a TCP connection that transparently retries by
@@ -448,8 +448,8 @@ func (r *retrier) Read(buf []byte) (n int, err error) {
448448
if n == 0 && err == nil {
449449
err = io.ErrNoProgress
450450
}
451-
logeor(err, note)("retrier: read: %s: [%s<=%s] b: %d/%d (tee: %d); err: %v",
452-
r.dialerID(), laddr(c), r.raddr, n, len(buf), len(r.tee), err)
451+
logeor(err, note)("retrier: read: %s: [%s<=%s]; t: %s; b: %d/%d (tee: %d); err: %v",
452+
r.dialerID(), laddr(c), r.raddr, core.FmtPeriod(r.timeout), n, len(buf), len(r.tee), err)
453453
} // else: needs retry as c == nil
454454

455455
note = log.D
@@ -476,21 +476,21 @@ func (r *retrier) Read(buf []byte) (n int, err error) {
476476
retryReadErr = nil // break
477477
err = nil // return no error
478478
}
479-
logeor(retryReadErr, note)("retrier: read: %s: #%d + (mult? %d %T / c: %d): [%s<=%s] b:%d/%d; err? %v",
480-
r.dialerID(), r.retryCount, len(r.dialers), c, r.nextDialerIdx, laddr(c), r.raddr, n, len(buf), retryReadErr)
479+
logeor(retryReadErr, note)("retrier: read: %s: #%d + (mult? %d %T / c: %d): [%s<=%s]; t: %s; b:%d/%d; err? %v",
480+
r.dialerID(), r.retryCount, len(r.dialers), c, r.nextDialerIdx, core.FmtPeriod(r.timeout), laddr(c), r.raddr, n, len(buf), retryReadErr)
481481
}
482482
if c != nil && core.IsNotNil(c) {
483483
// caller might have set read or write deadlines before the retry
484484
_ = c.SetReadDeadline(r.readDeadline)
485485
_ = c.SetWriteDeadline(r.writeDeadline)
486486
}
487-
logeor(err, note)("retrier: read: %s: #%d + (mult? %d / %d) [%s<=%s] b: %d/%d; err? %v",
488-
r.dialerID(), r.retryCount, len(r.dialers), r.nextDialerIdx, laddr(c), r.raddr, n, len(buf), err)
487+
logeor(err, note)("retrier: read: %s: #%d + (mult? %d / %d) [%s<=%s]; t: %s; b: %d/%d; err? %v",
488+
r.dialerID(), r.retryCount, len(r.dialers), r.nextDialerIdx, core.FmtPeriod(r.timeout), laddr(c), r.raddr, n, len(buf), err)
489489
r.tee = nil // discard teed data
490490
return
491491
}
492-
logeor(err, note)("retrier: read: %s already retried! [%s<=%s] b: %d/%d; err? %v",
493-
r.dialerID(), laddr(c), r.raddr, n, len(buf), err)
492+
logeor(err, note)("retrier: read: %s already retried! [%s<=%s]; t: %s; b: %d/%d; err? %v",
493+
r.dialerID(), laddr(c), r.raddr, core.FmtPeriod(r.timeout), n, len(buf), err)
494494
} // else: just one read is enough; no retry needed
495495
return
496496
}
@@ -545,8 +545,8 @@ func (r *retrier) Write(b []byte) (int, error) {
545545
note = log.I
546546
}
547547

548-
logeor(err, note)("retrier: write: %s: (first? %t, sent? %t) (rtimeout: %dms) [%v=>%s] b: %d/%d (tee: %d); write-err? %v",
549-
r.dialerID(), first, sentAndCopied, r.timeout.Milliseconds(), src, r.raddr, n, len(b), len(r.tee), err)
548+
logeor(err, note)("retrier: write: %s: (first? %t, sent? %t) [%v=>%s]; t: %s; b: %d/%d (tee: %d); write-err? %v",
549+
r.dialerID(), first, sentAndCopied, src, r.raddr, core.FmtPeriod(r.timeout), n, len(b), len(r.tee), err)
550550

551551
if sentAndCopied {
552552
// if Write() does not wait for <-retryDoneCh in absence of errors,
@@ -569,8 +569,8 @@ func (r *retrier) Write(b []byte) (int, error) {
569569
select {
570570
case <-r.retryDoneCh:
571571
case <-time.After(3 * maxExpectedReadTimeout): // arb high timeout; it should rarely if ever needed
572-
log.W("retrier: write: %s: 1st write timed-out waiting for %dms [calc-rtt: %dms] 1st read b/w [%s=>%s], mult: %d, b: %d/%d, err: %v",
573-
r.dialerID(), (3 * maxExpectedReadTimeout).Milliseconds(), r.timeout.Milliseconds(), src, r.raddr, len(r.dialers), n, len(b), err)
572+
log.W("retrier: write: %s: 1st write timed-out waiting for %s [calc-rtt: %s] 1st read b/w [%s=>%s], mult: %d, b: %d/%d, err: %v",
573+
r.dialerID(), core.FmtPeriod(3*maxExpectedReadTimeout), core.FmtPeriod(r.timeout), src, r.raddr, len(r.dialers), n, len(b), err)
574574
return n, core.JoinErr(err, errRetryTimeout)
575575
}
576576

0 commit comments

Comments
 (0)