Place concurrency limiter middleware after retry middlewares (#3420)
This is to safeguard against the scenario where retry handlers might spawn additional requests to graph. Such retries may cause us to exceed concurrent request limits, leading to 429s ( `Application is over its MailboxConcurrency limit`) This PR will ensure that such retry requests are also funneled through the concurrency limiter. --- #### Does this PR need a docs update or release note? - [ ] ✅ Yes, it's included - [ ] 🕐 Yes, but in a later PR - [x] ⛔ No #### Type of change <!--- Please check the type of change your PR introduces: ---> - [ ] 🌻 Feature - [x] 🐛 Bugfix - [ ] 🗺️ Documentation - [ ] 🤖 Supportability/Tests - [ ] 💻 CI/Deployment - [ ] 🧹 Tech Debt/Cleanup #### Issue(s) <!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. --> * #<issue> #### Test Plan <!-- How will this be tested prior to merging.--> - [ ] 💪 Manual - [x] ⚡ Unit test - [ ] 💚 E2E
This commit is contained in:
parent
2ad32660e8
commit
965427d491
@ -247,11 +247,6 @@ func kiotaMiddlewares(
|
|||||||
) []khttp.Middleware {
|
) []khttp.Middleware {
|
||||||
mw := []khttp.Middleware{}
|
mw := []khttp.Middleware{}
|
||||||
|
|
||||||
// Optionally add concurrency limiter middleware if it has been initialized
|
|
||||||
if concurrencyLim != nil {
|
|
||||||
mw = append(mw, concurrencyLim)
|
|
||||||
}
|
|
||||||
|
|
||||||
mw = append(mw, []khttp.Middleware{
|
mw = append(mw, []khttp.Middleware{
|
||||||
msgraphgocore.NewGraphTelemetryHandler(options),
|
msgraphgocore.NewGraphTelemetryHandler(options),
|
||||||
&RetryMiddleware{
|
&RetryMiddleware{
|
||||||
@ -264,10 +259,18 @@ func kiotaMiddlewares(
|
|||||||
khttp.NewParametersNameDecodingHandler(),
|
khttp.NewParametersNameDecodingHandler(),
|
||||||
khttp.NewUserAgentHandler(),
|
khttp.NewUserAgentHandler(),
|
||||||
&LoggingMiddleware{},
|
&LoggingMiddleware{},
|
||||||
&RateLimiterMiddleware{},
|
|
||||||
&MetricsMiddleware{},
|
|
||||||
}...)
|
}...)
|
||||||
|
|
||||||
|
// Optionally add concurrency limiter middleware if it has been initialized.
|
||||||
|
if concurrencyLim != nil {
|
||||||
|
mw = append(mw, concurrencyLim)
|
||||||
|
}
|
||||||
|
|
||||||
|
mw = append(
|
||||||
|
mw,
|
||||||
|
&RateLimiterMiddleware{},
|
||||||
|
&MetricsMiddleware{})
|
||||||
|
|
||||||
if len(cc.appendMiddleware) > 0 {
|
if len(cc.appendMiddleware) > 0 {
|
||||||
mw = append(mw, cc.appendMiddleware...)
|
mw = append(mw, cc.appendMiddleware...)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user