There are two backoffs in the current backoff and retry mechanism, the first one is inside the callWithRetry() function, the other one is outside the function, can be expressed like the following pseudo code:
callWithRetry()
backoff
backoff
These backoffs can be integrated into one backoff like the following:
callWithRetry()
backoff
Details
The following slow log illustrates the problem, the first backoff happens at
Enhancement
Summary
There are two backoffs in the current backoff and retry mechanism, the first one is inside the
callWithRetry()
function, the other one is outside the function, can be expressed like the following pseudo code:These backoffs can be integrated into one backoff like the following:
Details
The following slow log illustrates the problem, the first backoff happens at
the second backoff happens at:
As you can see,
BoRegionMiss
is executed twice and the total backoff time is increased to more than 60 seconds.