Instrument methods with dispatcher=true when they invoke token.link() outside of a transaction #1140
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.
Overview
There are cases for async transactions in which customers call
Token.link()
outside of a transaction, which causes linking to fail. We can detect this happening and re-transforming the class so that the method is traced with transactions enabled.To determine the calling class/method, we generate an exception and use the stack trace elements. Because we're doing this automatically, I added rate limiting so that we only try this once per second. We could make that time configurable, and we could add a config switch to completely disable this behavior.
Related Github Issue
https://issues.newrelic.com/browse/NR-74916
Testing
The referenced ticket contains an application which can be used to reproduce the issue and verify the fix.
Checks
[ ] Are your contributions backwards compatible with relevant frameworks and APIs?
[ ] Does your code contain any breaking changes? Please describe.
[ ] Does your code introduce any new dependencies? Please describe.