alibaba / Sentinel

A powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件)
https://sentinelguard.io/
Apache License 2.0
22.45k stars 8.04k forks source link

fix issue 2485 which occur oom when using async servlet request. #3440

Closed Linzyoo closed 3 months ago

Linzyoo commented 3 months ago

Describe what this PR does / why we need it

There is an issue about it.

Does this pull request fix one issue?

Fixes #2485

Describe how you did it

Extends HandlerInterceptor with a callback method invoked after the start of asynchronous request handling. When a handler starts an asynchronous request, the DispatcherServlet exits without invoking postHandle and afterCompletion. Then it will not exit the context and clean the thread-local variables for the request. So I extends AsynHandlerInterceptor which is to deal with this situation correctly.

Describe how to verify it

Debug to check context and ctentry. Add a unit test for Async servlet request, and check the context after response.

Special notes for reviews

CLAassistant commented 3 months ago

CLA assistant check
All committers have signed the CLA.

Linzyoo commented 3 months ago

finished imporving codes based on the review comments. And update the webmvc-v6x too which has the same issue.