golang: avoid accessing deleted decoder_callbacks #37405
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This patch is provided by @doujiang24.
Commit Message: golang: avoid accessing deleted state
Additional Description: During Golang GC there will be envoyGoFilterHttpFinalize -> deferredDeleteRequest -> getDispatcher. Before this fix, the getDispatcher will use the occasional deleted decoder callback, which will cause a crash. After this fix, we won't touch the deleted callback anymore.
Risk Level: Low
Testing: after 3 hours load testing, the Envoy with this fix is still running well.
Docs Changes:
Release Notes:
Platform Specific Features:
[Optional Runtime guard:]
Fixes #37225
[Optional Fixes commit #PR or SHA]
[Optional Deprecated:]
[Optional API Considerations:]