A retry policy invented per call site is eleven policies, and the aggressive one
turns a server having a bad minute into a server being hammered by every client
in the house.
What this produces
One policy, written down with its numbers and the reason for each. Which error
kinds are retried, which are never retried, how many attempts, and the interval
between them.
Randomised spacing, so that a wall of tiles failing together does not retry
together.
An overall bound on how long a caller can be kept waiting by retries, connected
to the thresholds in the slow-server record in #7, so that retrying never quietly
exceeds the point at which the core should have reported that an answer is not
coming.
Done when
The policy is recorded with its numbers and reasons, a test proves a
never-retried kind is attempted exactly once, a test proves the total time
stays within the bound from #7, and a test proves two callers failing at the
same moment do not retry at the same moment. Blocked on #4, #7, and #102 for
the clock a backoff interval is measured against, since an interval taken
across a clock correction is either instant or a month.
A retry policy invented per call site is eleven policies, and the aggressive one
turns a server having a bad minute into a server being hammered by every client
in the house.
What this produces
One policy, written down with its numbers and the reason for each. Which error
kinds are retried, which are never retried, how many attempts, and the interval
between them.
Randomised spacing, so that a wall of tiles failing together does not retry
together.
An overall bound on how long a caller can be kept waiting by retries, connected
to the thresholds in the slow-server record in #7, so that retrying never quietly
exceeds the point at which the core should have reported that an answer is not
coming.
Done when
The policy is recorded with its numbers and reasons, a test proves a
never-retried kind is attempted exactly once, a test proves the total time
stays within the bound from #7, and a test proves two callers failing at the
same moment do not retry at the same moment. Blocked on #4, #7, and #102 for
the clock a backoff interval is measured against, since an interval taken
across a clock correction is either instant or a month.