You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Seems like dialogue makes a few changes from the 'battle-tested' behaviour that is running in prod right now, and I'd like to capture the reasons why somewhere.
c-j-r waited for the request body to close before releasing a permit, dialogue just releases when the request comes back
c-j-r kept a limiter per <pathTemplate,method> (which is roughly an endpoint), dialogue has one limiter per uri
c-j-r used a forked ConjureWindowedLimit, dialogue uses a vanilla netflix WindowedLimit
c-j-r considers 429 and 503 as failures (and 308 is a no-op), dialogue only counts 429 as a failure, all other response codes increase permits (!?). client-side exceptions are no-op.
c-j-r uses a ThreadWorkQueue to ensure that one thread making a ton of requests can't starve another thread that just needs to make a few. Dialogue used to have a single queue, but currently just schedules retries on a single scheduled executor
For (1), I think the rationale is that way too many people fail to close all their response bodies, leading to degenerate behaviour where they time out waiting for concurrency limiters. Seems like we get 80% of the benefits of concurrency limiters without this extra strictness, and also protect ourselves from a ton of possible downsides due to misuse.
(4) just seems like a mistake?
The text was updated successfully, but these errors were encountered:
Seems like dialogue makes a few changes from the 'battle-tested' behaviour that is running in prod right now, and I'd like to capture the reasons why somewhere.
<pathTemplate,method>
(which is roughly an endpoint), dialogue has one limiter per uriFor (1), I think the rationale is that way too many people fail to close all their response bodies, leading to degenerate behaviour where they time out waiting for concurrency limiters. Seems like we get 80% of the benefits of concurrency limiters without this extra strictness, and also protect ourselves from a ton of possible downsides due to misuse.
(4) just seems like a mistake?
The text was updated successfully, but these errors were encountered: