kv: avoid retry error allocation on each Txn.exec call #74350
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.
Similar to #74339.
This commit updates
Txn.exec
to only callerrors.As
if the error from thetransaction execution was non-nil. This avoids a heap allocation of a
TransactionRetryWithProtoRefreshError
on each call toTxn.exec
, which wasoriginally introduced in a8ae1bf.
In kv100 (100% reads), this is responsible for 0.36% of total CPU usage.
This is part of a collection of assorted micro-optimizations:
Combined, these changes have the following effect on end-to-end SQL query performance: