Fix spring kafka context leak when batch listener is retried #10741
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.
Resolves #10698
In later versions of spring kafka
BatchInterceptor
does not work correctly for retries. On retry only theintercept
method is called that starts the span, butsuccess
andfailure
that end it are not called. This results in a context leak. This PR implements javaagent instrumentation for batch listeners without usingBatchInterceptor
and modifies theBatchInterceptor
in library instrumentation to ignore retries. Tests are altered to also test retries.To fix handling of retries in the library instrumentation we'll probably need to implement the tracing in a different way. Perhaps we should try wrapping the message listener instead of using
BatchInterceptor
andRecordInterceptor
?