Prevent double use of git cat-file
session. (#29298)
#29301
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.
Backport #29298
Fixes the reason why #29101 is hard to replicate.
Related #29297
Create a repo with a file with minimum size 4097 bytes (I use 10000) and execute the following code:
The problem is the check in
CatFileBatch
:gitea/modules/git/repo_base_nogogit.go
Lines 81 to 87 in 79217ea
Buffered() > 0
is used to check if there is a "operation" in progress at the moment. This is a problem because we can't control the internal buffer in thebufio.Reader
. The code above demonstrates a sequence which initiates an operation for which the code thinks there is no active processing. The second call toDataAsync()
therefore reuses the existing instances instead of creating a new batch reader.