added SessionResetter into driver_conn optional interfaces #1000
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.
Links
N/A
Details
Problem
The nrmysql driver in newrelic/go-agent does not properly handle connection reuse in case of last query was errored when MySQL closes an idle connection and application try to reuse it, This leads to a "commands out of sync" error when the same connection is used again.
Steps to Reproduce
The following test program demonstrates the issue:
Root Cause
The repository provides an SQL driver that implements various sql package interfaces. One of these interfaces is driver.SessionResetter, which is already implemented in sql_driver.go. However, the optionalMethodsConn type in sql_driver_optional_methods.go did not support driver.SessionResetter.
Solution
Additional Notes