store/tikv: fix CheckStreamTimeoutLoop goroutine leak (#13812) #14227
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.
Automated cherry pick of #13812 on release-3.0.
Fixes #14207
What problem does this PR solve?
When the TiKV server close, this goroutine leaks:
In our code, the
CheckStreamTimeoutLoop
goroutine is only closed whenrpcClient
close,but the
rpcClient
never close before the TiDB process exit.What is changed and how it works?
CheckStreamTimeoutLoop
goroutine is initialized for eachconnArray
, but they're not closed whenconnArray
close, thus leading to the leak.Move the
done
channel fromrpcClient
toconnArray
, the goroutine would exit whenconnArray
is closed.There is an idle recycle mechanism for the
connArray
to be closed when TiKV server is gone.Check List