[
https://issues.apache.org/jira/browse/RATIS-2417?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Tsz-wo Sze resolved RATIS-2417.
-------------------------------
Fix Version/s: 3.3.0
Resolution: Fixed
The pull request is now merged. Thanks, [~slfan1989]!
> Fix ChannelMap memory leak in DataStreamManagement when read() fails early
> --------------------------------------------------------------------------
>
> Key: RATIS-2417
> URL: https://issues.apache.org/jira/browse/RATIS-2417
> Project: Ratis
> Issue Type: Bug
> Components: Netty
> Reporter: Shilun Fan
> Assignee: Shilun Fan
> Priority: Major
> Fix For: 3.3.0
>
> Time Spent: 50m
> Remaining Estimate: 0h
>
> *Problem*
>
> When DataStreamManagement.read() throws an exception early (e.g., protocol
> parsing failure before readImpl() completes), the ChannelMap is not cleaned
> up properly. This causes the channelId -> invocationId mapping to accumulate
> in memory, leading to a memory leak.
>
> Currently, only removeDataStream() is called in the exception handler, but
> channels.remove() is not invoked to clean up the ChannelMap entry.
>
> *Solution*
>
> 1. Extract ClientInvocationId and ChannelId calculation before calling
> readImpl()
> 2. In the read() exception handler, add channels.remove(channelId, key) to
> properly clean up ChannelMap
--
This message was sent by Atlassian Jira
(v8.20.10#820010)