Repository navigation
Commit 8f23ee7
committed
fix(cache): match client-go's reconnect backoff algorithm
The reconnect delay doubled from a 1s base with no jitter, so every
client disconnected by the same event (an apiserver rollout, a load
balancer cycling) retried at the same instants and kept colliding.
Adopt client-go's defaultBackoff* values from the reflector's
ExponentialBackoffManager: an 800ms base, a factor of 2, a 30s cap, full
jitter, and a reset once the backoff has gone unused for two minutes.
Full jitter spreads each retry over [level, 2*level), which is what
breaks up the lockstep, and the idle reset means a client that recovered
stops paying for failures it has already outlived.
Only the delay computation changes. When a reconnect backs off at all is
untouched: the first reconnect is still free, and receiving a watch
event or a TimeoutError still clears the delay.
nowFn and randFn join delayFn as injectable options so the backoff can
be asserted deterministically instead of by sleeping.1 parent 0e873f1 commit 8f23ee7
2 files changed
Lines changed: 131 additions & 16 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
29 | 33 | | |
30 | 34 | | |
31 | 35 | | |
32 | | - | |
33 | | - | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
34 | 45 | | |
35 | 46 | | |
36 | 47 | | |
| |||
39 | 50 | | |
40 | 51 | | |
41 | 52 | | |
| 53 | + | |
42 | 54 | | |
43 | 55 | | |
| 56 | + | |
| 57 | + | |
44 | 58 | | |
45 | 59 | | |
46 | 60 | | |
| |||
63 | 77 | | |
64 | 78 | | |
65 | 79 | | |
| 80 | + | |
| 81 | + | |
66 | 82 | | |
67 | 83 | | |
68 | 84 | | |
| |||
78 | 94 | | |
79 | 95 | | |
80 | 96 | | |
| 97 | + | |
81 | 98 | | |
82 | 99 | | |
83 | 100 | | |
| |||
160 | 177 | | |
161 | 178 | | |
162 | 179 | | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
163 | 200 | | |
164 | 201 | | |
165 | 202 | | |
| |||
208 | 245 | | |
209 | 246 | | |
210 | 247 | | |
211 | | - | |
212 | | - | |
213 | | - | |
214 | 248 | | |
215 | | - | |
216 | | - | |
217 | | - | |
218 | | - | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
219 | 253 | | |
220 | 254 | | |
221 | 255 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
1561 | 1561 | | |
1562 | 1562 | | |
1563 | 1563 | | |
| 1564 | + | |
| 1565 | + | |
1564 | 1566 | | |
1565 | 1567 | | |
1566 | 1568 | | |
| |||
1574 | 1576 | | |
1575 | 1577 | | |
1576 | 1578 | | |
1577 | | - | |
| 1579 | + | |
1578 | 1580 | | |
1579 | 1581 | | |
1580 | 1582 | | |
1581 | | - | |
| 1583 | + | |
1582 | 1584 | | |
1583 | 1585 | | |
1584 | 1586 | | |
1585 | | - | |
| 1587 | + | |
1586 | 1588 | | |
1587 | 1589 | | |
1588 | 1590 | | |
| |||
1617 | 1619 | | |
1618 | 1620 | | |
1619 | 1621 | | |
| 1622 | + | |
1620 | 1623 | | |
1621 | 1624 | | |
1622 | 1625 | | |
| |||
1625 | 1628 | | |
1626 | 1629 | | |
1627 | 1630 | | |
1628 | | - | |
| 1631 | + | |
1629 | 1632 | | |
1630 | 1633 | | |
1631 | 1634 | | |
| |||
1636 | 1639 | | |
1637 | 1640 | | |
1638 | 1641 | | |
1639 | | - | |
| 1642 | + | |
1640 | 1643 | | |
1641 | 1644 | | |
1642 | 1645 | | |
| |||
1718 | 1721 | | |
1719 | 1722 | | |
1720 | 1723 | | |
| 1724 | + | |
1721 | 1725 | | |
1722 | 1726 | | |
1723 | 1727 | | |
| |||
1737 | 1741 | | |
1738 | 1742 | | |
1739 | 1743 | | |
1740 | | - | |
| 1744 | + | |
| 1745 | + | |
| 1746 | + | |
| 1747 | + | |
| 1748 | + | |
| 1749 | + | |
| 1750 | + | |
| 1751 | + | |
| 1752 | + | |
| 1753 | + | |
| 1754 | + | |
| 1755 | + | |
| 1756 | + | |
| 1757 | + | |
| 1758 | + | |
| 1759 | + | |
| 1760 | + | |
| 1761 | + | |
| 1762 | + | |
| 1763 | + | |
| 1764 | + | |
| 1765 | + | |
| 1766 | + | |
| 1767 | + | |
| 1768 | + | |
| 1769 | + | |
| 1770 | + | |
| 1771 | + | |
| 1772 | + | |
| 1773 | + | |
| 1774 | + | |
| 1775 | + | |
| 1776 | + | |
| 1777 | + | |
| 1778 | + | |
| 1779 | + | |
| 1780 | + | |
| 1781 | + | |
| 1782 | + | |
| 1783 | + | |
| 1784 | + | |
| 1785 | + | |
| 1786 | + | |
| 1787 | + | |
| 1788 | + | |
| 1789 | + | |
| 1790 | + | |
| 1791 | + | |
| 1792 | + | |
| 1793 | + | |
| 1794 | + | |
| 1795 | + | |
| 1796 | + | |
| 1797 | + | |
| 1798 | + | |
| 1799 | + | |
| 1800 | + | |
| 1801 | + | |
| 1802 | + | |
| 1803 | + | |
| 1804 | + | |
| 1805 | + | |
| 1806 | + | |
| 1807 | + | |
| 1808 | + | |
| 1809 | + | |
| 1810 | + | |
| 1811 | + | |
| 1812 | + | |
| 1813 | + | |
| 1814 | + | |
| 1815 | + | |
| 1816 | + | |
| 1817 | + | |
| 1818 | + | |
| 1819 | + | |
| 1820 | + | |
| 1821 | + | |
1741 | 1822 | | |
1742 | 1823 | | |
1743 | 1824 | | |
| |||
0 commit comments