Skip to content

Commit d2da8cd

Browse files
enable_commenter for instrument_connection psycopg(2)
1 parent 6c92f38 commit d2da8cd

2 files changed

Lines changed: 40 additions & 6 deletions

File tree

  • instrumentation
    • opentelemetry-instrumentation-psycopg2/src/opentelemetry/instrumentation/psycopg2
    • opentelemetry-instrumentation-psycopg/src/opentelemetry/instrumentation/psycopg

instrumentation/opentelemetry-instrumentation-psycopg/src/opentelemetry/instrumentation/psycopg/__init__.py

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@
114114
)
115115
from psycopg.sql import Composed # pylint: disable=no-name-in-module
116116

117+
from opentelemetry import trace as trace_api
117118
from opentelemetry.instrumentation import dbapi
118119
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
119120
from opentelemetry.instrumentation.psycopg.package import _instruments
@@ -195,7 +196,12 @@ def _uninstrument(self, **kwargs):
195196

196197
# TODO(owais): check if core dbapi can do this for all dbapi implementations e.g, pymysql and mysql
197198
@staticmethod
198-
def instrument_connection(connection, tracer_provider=None):
199+
def instrument_connection(
200+
connection,
201+
tracer_provider=None,
202+
enable_commenter: bool = False,
203+
commenter_options: dict = None,
204+
):
199205
if not hasattr(connection, "_is_instrumented_by_opentelemetry"):
200206
connection._is_instrumented_by_opentelemetry = False
201207

@@ -204,7 +210,9 @@ def instrument_connection(connection, tracer_provider=None):
204210
connection, _OTEL_CURSOR_FACTORY_KEY, connection.cursor_factory
205211
)
206212
connection.cursor_factory = _new_cursor_factory(
207-
tracer_provider=tracer_provider
213+
tracer_provider=tracer_provider,
214+
enable_commenter=enable_commenter,
215+
commenter_options=commenter_options,
208216
)
209217
connection._is_instrumented_by_opentelemetry = True
210218
else:
@@ -288,14 +296,23 @@ def get_statement(self, cursor, args):
288296
return statement
289297

290298

291-
def _new_cursor_factory(db_api=None, base_factory=None, tracer_provider=None):
299+
def _new_cursor_factory(
300+
db_api: dbapi.DatabaseApiIntegration = None,
301+
base_factory: pg_cursor = None,
302+
tracer_provider: typing.Optional[trace_api.TracerProvider] = None,
303+
enable_commenter: bool = False,
304+
commenter_options: dict = None,
305+
):
292306
if not db_api:
293307
db_api = DatabaseApiIntegration(
294308
__name__,
295309
PsycopgInstrumentor._DATABASE_SYSTEM,
296310
connection_attributes=PsycopgInstrumentor._CONNECTION_ATTRIBUTES,
297311
version=__version__,
298312
tracer_provider=tracer_provider,
313+
enable_commenter=enable_commenter,
314+
commenter_options=commenter_options,
315+
connect_module=psycopg,
299316
)
300317

301318
base_factory = base_factory or pg_cursor

instrumentation/opentelemetry-instrumentation-psycopg2/src/opentelemetry/instrumentation/psycopg2/__init__.py

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@
111111
)
112112
from psycopg2.sql import Composed # pylint: disable=no-name-in-module
113113

114+
from opentelemetry import trace as trace_api
114115
from opentelemetry.instrumentation import dbapi
115116
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
116117
from opentelemetry.instrumentation.psycopg2.package import _instruments
@@ -159,7 +160,12 @@ def _uninstrument(self, **kwargs):
159160

160161
# TODO(owais): check if core dbapi can do this for all dbapi implementations e.g, pymysql and mysql
161162
@staticmethod
162-
def instrument_connection(connection, tracer_provider=None):
163+
def instrument_connection(
164+
connection,
165+
tracer_provider=None,
166+
enable_commenter: bool = False,
167+
commenter_options: dict = None,
168+
):
163169
if not hasattr(connection, "_is_instrumented_by_opentelemetry"):
164170
connection._is_instrumented_by_opentelemetry = False
165171

@@ -168,7 +174,9 @@ def instrument_connection(connection, tracer_provider=None):
168174
connection, _OTEL_CURSOR_FACTORY_KEY, connection.cursor_factory
169175
)
170176
connection.cursor_factory = _new_cursor_factory(
171-
tracer_provider=tracer_provider
177+
tracer_provider=tracer_provider,
178+
enable_commenter=enable_commenter,
179+
commenter_options=commenter_options,
172180
)
173181
connection._is_instrumented_by_opentelemetry = True
174182
else:
@@ -231,14 +239,23 @@ def get_statement(self, cursor, args):
231239
return statement
232240

233241

234-
def _new_cursor_factory(db_api=None, base_factory=None, tracer_provider=None):
242+
def _new_cursor_factory(
243+
db_api: dbapi.DatabaseApiIntegration = None,
244+
base_factory: pg_cursor = None,
245+
tracer_provider: typing.Optional[trace_api.TracerProvider] = None,
246+
enable_commenter: bool = False,
247+
commenter_options: dict = None,
248+
):
235249
if not db_api:
236250
db_api = DatabaseApiIntegration(
237251
__name__,
238252
Psycopg2Instrumentor._DATABASE_SYSTEM,
239253
connection_attributes=Psycopg2Instrumentor._CONNECTION_ATTRIBUTES,
240254
version=__version__,
241255
tracer_provider=tracer_provider,
256+
enable_commenter=enable_commenter,
257+
commenter_options=commenter_options,
258+
connect_module=psycopg2,
242259
)
243260

244261
base_factory = base_factory or pg_cursor

0 commit comments

Comments
 (0)