sync.Pool should be passed by reference #614
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.
The sync.Pool used in filter/proxy/pool.go should be passed by reference instead of by value.
use go vet command
go vet pkg/filter/proxy/*.go
, then get the warnings.note: objects in sync.Pool that are not explicitly cleaned up before call
Put
may cause dirty data to be obtained the next time callGet
. I'm guessinghttpStatResultPool
might be the case, but I need experiments to prove it. EG:When the first request succeeds,httpstat.Result
's some properties will be set, and when the second request fails (failed to resolve the domain name, failed to establish a tcp link and etc.), some properties (NameLookup\TLSHandshake\serverDone) may use the last one. value,that may be leads to a bias in the statistics