Avoid side-effects of calling Statement.getUpdateCount #1139
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.
What does this PR do?
Current instrumentation of
java.sql.StatementcallsStatement.getUpdateCount()just after SQL statement execution in order to retrieve the number of modified rows by the statement.While there is a warning in Javadoc about calling this method only once, in practice most implementations allow to call it multiple times without any problem. We had integration tests that covered most common databases thus we were confident on that hypothesis.
However, it seems that some database servers (or JDBC drivers) like Oracle strictly follow the specification and just allow for a single call to
getUpdateCount. As a result, our agent would capture the first value, and then an invalid value would then be returned.Impacted applications would be those for which both statements are true
Statement.getUpdateCount()Checklist
I have made corresponding changes to the documentationI have updated supported-technologies.asciidocAdded an API method or config option? Document in which version this will be introducedAdded an instrumentation plugin? How did you make sure that old, non-supported versions are not instrumented by accident?Author's Checklist