mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-08-01 09:13:23 +08:00
fix: Ensure compability with Psycopg3 to extract libpq build version (#2500)
* fix: Ensure compability with Psycopg3 to extract libpq build version Struggling with getting dbapi and psycopg3 working. Think this is the error, __libpq_version does not exist on psycopg3 https://github.com/psycopg/psycopg/blob/master/psycopg/psycopg/pq/pq_ctypes.py#L1220 * docs: Add changelog entry * docs: Fix spelling --------- Co-authored-by: Riccardo Magliocchetti <riccardo.magliocchetti@gmail.com> Co-authored-by: Shalev Roda <65566801+shalevr@users.noreply.github.com>
This commit is contained in:
@ -39,6 +39,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
- `opentelemetry-instrumentation-dbapi` Fix compatibility with Psycopg3 to extract libpq build version (#2500)[https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2500]
|
||||||
- `opentelemetry-instrumentation-grpc` AioClientInterceptor should propagate with a Metadata object
|
- `opentelemetry-instrumentation-grpc` AioClientInterceptor should propagate with a Metadata object
|
||||||
([#2363](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2363))
|
([#2363](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2363))
|
||||||
- `opentelemetry-instrumentation-boto3sqs` Instrument Session and resource
|
- `opentelemetry-instrumentation-boto3sqs` Instrument Session and resource
|
||||||
@ -126,7 +127,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
([#1959](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1959))
|
([#1959](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1959))
|
||||||
- `opentelemetry-resource-detector-azure` Added dependency for Cloud Resource ID attribute
|
- `opentelemetry-resource-detector-azure` Added dependency for Cloud Resource ID attribute
|
||||||
([#2072](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2072))
|
([#2072](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2072))
|
||||||
|
|
||||||
## Version 1.21.0/0.42b0 (2023-11-01)
|
## Version 1.21.0/0.42b0 (2023-11-01)
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
@ -1540,4 +1541,3 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
- `opentelemetry-resource-detector-azure` Suppress instrumentation for `urllib` call
|
- `opentelemetry-resource-detector-azure` Suppress instrumentation for `urllib` call
|
||||||
([#2178](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2178))
|
([#2178](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2178))
|
||||||
- AwsLambdaInstrumentor handles and re-raises function exception ([#2245](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2245))
|
- AwsLambdaInstrumentor handles and re-raises function exception ([#2245](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2245))
|
||||||
|
|
||||||
|
@ -427,12 +427,19 @@ class CursorTracer:
|
|||||||
if args and self._commenter_enabled:
|
if args and self._commenter_enabled:
|
||||||
try:
|
try:
|
||||||
args_list = list(args)
|
args_list = list(args)
|
||||||
|
if hasattr(self._connect_module, "__libpq_version__"):
|
||||||
|
libpq_version = self._connect_module.__libpq_version__
|
||||||
|
else:
|
||||||
|
libpq_version = (
|
||||||
|
self._connect_module.pq.__build_version__
|
||||||
|
)
|
||||||
|
|
||||||
commenter_data = {
|
commenter_data = {
|
||||||
# Psycopg2/framework information
|
# Psycopg2/framework information
|
||||||
"db_driver": f"psycopg2:{self._connect_module.__version__.split(' ')[0]}",
|
"db_driver": f"psycopg2:{self._connect_module.__version__.split(' ')[0]}",
|
||||||
"dbapi_threadsafety": self._connect_module.threadsafety,
|
"dbapi_threadsafety": self._connect_module.threadsafety,
|
||||||
"dbapi_level": self._connect_module.apilevel,
|
"dbapi_level": self._connect_module.apilevel,
|
||||||
"libpq_version": self._connect_module.__libpq_version__,
|
"libpq_version": libpq_version,
|
||||||
"driver_paramstyle": self._connect_module.paramstyle,
|
"driver_paramstyle": self._connect_module.paramstyle,
|
||||||
}
|
}
|
||||||
if self._commenter_options.get(
|
if self._commenter_options.get(
|
||||||
|
@ -275,6 +275,32 @@ class TestDBApiIntegration(TestBase):
|
|||||||
r"Select 1 /\*dbapi_threadsafety=123,driver_paramstyle='test',libpq_version=123,traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
r"Select 1 /\*dbapi_threadsafety=123,driver_paramstyle='test',libpq_version=123,traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_compatible_build_version_psycopg_psycopg2_libpq(self):
|
||||||
|
connect_module = mock.MagicMock()
|
||||||
|
connect_module.__version__ = mock.MagicMock()
|
||||||
|
connect_module.pq = mock.MagicMock()
|
||||||
|
connect_module.pq.__build_version__ = 123
|
||||||
|
connect_module.apilevel = 123
|
||||||
|
connect_module.threadsafety = 123
|
||||||
|
connect_module.paramstyle = "test"
|
||||||
|
|
||||||
|
db_integration = dbapi.DatabaseApiIntegration(
|
||||||
|
"testname",
|
||||||
|
"testcomponent",
|
||||||
|
enable_commenter=True,
|
||||||
|
commenter_options={"db_driver": False, "dbapi_level": False},
|
||||||
|
connect_module=connect_module,
|
||||||
|
)
|
||||||
|
mock_connection = db_integration.wrapped_connection(
|
||||||
|
mock_connect, {}, {}
|
||||||
|
)
|
||||||
|
cursor = mock_connection.cursor()
|
||||||
|
cursor.executemany("Select 1;")
|
||||||
|
self.assertRegex(
|
||||||
|
cursor.query,
|
||||||
|
r"Select 1 /\*dbapi_threadsafety=123,driver_paramstyle='test',libpq_version=123,traceparent='\d{1,2}-[a-zA-Z0-9_]{32}-[a-zA-Z0-9_]{16}-\d{1,2}'\*/;",
|
||||||
|
)
|
||||||
|
|
||||||
def test_executemany_flask_integration_comment(self):
|
def test_executemany_flask_integration_comment(self):
|
||||||
connect_module = mock.MagicMock()
|
connect_module = mock.MagicMock()
|
||||||
connect_module.__version__ = mock.MagicMock()
|
connect_module.__version__ = mock.MagicMock()
|
||||||
|
Reference in New Issue
Block a user