Fix the socket read/write fatal deadlock problem when a large number of concurrent requests or a large amount of data is written at the same time #572
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.
When a large number of concurrent requests or a large amount of data is written at the same time, the connection send buffer may be exceeded or the database processing speed may be exceeded, and the data not completely written will be discarded, which will lead to deadlock due to incomplete connection transfer protocol data.
The connection state management and connection write data are completely separate, and the connection state is not changed when writing data, so the write data should be released with an independent lock and the state management lock, otherwise it may lead to read results that cannot get the state lock to read the results, and then further lead to deadlock when the connection write data cannot be completed.
Testing Code