Skip to content
This repository was archived by the owner on Jun 13, 2023. It is now read-only.

Commit 716f67f

Browse files
authored
fix(tracer,dbapi): adding debug messages
1 parent d662f60 commit 716f67f

4 files changed

Lines changed: 52 additions & 20 deletions

File tree

epsagon/events/dbapi.py

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def parse_dsn(dsn):
2323

2424
from ..trace import trace_factory
2525
from ..event import BaseEvent
26-
from ..utils import database_connection_type
26+
from ..utils import database_connection_type, print_debug
2727

2828
MAX_QUERY_SIZE = 2048
2929

@@ -68,33 +68,47 @@ def __init__(
6868
"""
6969

7070
super(DBAPIEvent, self).__init__(start_time)
71-
7271
self.event_id = 'dbapi-{}'.format(str(uuid4()))
7372

7473
# in case of pg instrumentation we extract data from the dsn property
7574
if hasattr(connection, 'dsn'):
75+
print_debug('Parsing using dsn')
7676
dsn = parse_dsn(connection.dsn)
77-
db_name = dsn['dbname']
77+
print_debug('Parsed dsn: {}'.format(dsn))
78+
db_name = dsn.get('dbname', '')
7879
host = dsn.get('host', 'local')
7980
query = cursor.query
8081
else:
8182
query = _args[0]
8283
host = connection.extract_hostname
8384
db_name = connection.extract_dbname
85+
print_debug(
86+
'Extracted db name - {}, host - {}, query - {}'.format(
87+
db_name, host, query
88+
)
89+
)
8490

8591
self.resource['name'] = db_name if db_name else host
8692

8793
# NOTE: The operation might not be identified properly when
8894
# using 'WITH' clause
89-
operation = query.split()[0].lower()
95+
splitted_query = query.split()
96+
if not splitted_query:
97+
print_debug('Cannot extract operation from query {}'.format(query))
98+
operation = ''
99+
else:
100+
operation = splitted_query[0].lower()
90101
self.resource['operation'] = operation
91-
92102
# override event type with the specific DB type
93103
self.resource['type'] = database_connection_type(
94104
host,
95105
self.RESOURCE_TYPE
96106
)
97-
107+
print_debug(
108+
'{}: resource name - {}, operation - {}'.format(
109+
self.event_id, self.resource['name'], self.resource['operation']
110+
)
111+
)
98112
self.resource['metadata'] = {
99113
'Host': host,
100114
'Driver': connection.__class__.__module__.split('.')[0],
@@ -107,6 +121,11 @@ def __init__(
107121
(not trace_factory.metadata_only)
108122
):
109123
self.resource['metadata']['Query'] = query[:MAX_QUERY_SIZE]
124+
print_debug(
125+
'{}: collected query {}'.format(
126+
self.event_id, self.resource['metadata']['Query']
127+
)
128+
)
110129

111130
if exception is None:
112131
# Update response data
@@ -155,6 +174,7 @@ def create_event(wrapped, cursor_wrapper, args, kwargs, start_time,
155174
:param exception:
156175
:return:
157176
"""
177+
print_debug('Creating DBAPI event')
158178
event = DBAPIEvent(
159179
cursor_wrapper.connection_wrapper,
160180
cursor_wrapper,
@@ -163,4 +183,5 @@ def create_event(wrapped, cursor_wrapper, args, kwargs, start_time,
163183
start_time,
164184
exception,
165185
)
186+
print_debug('Adding DBAPI event to trace')
166187
trace_factory.add_event(event)

epsagon/trace.py

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1182,19 +1182,29 @@ def _send_traces(self):
11821182
else create_transport(self.collector_url, self.token)
11831183
)
11841184

1185-
# Update events resource metadata.
1186-
for event in self.events:
1187-
# Remove ignored keys.
1188-
event.resource['metadata'] = self.remove_ignored_keys(
1189-
event.resource['metadata'])
1190-
# Keep allowed keys.
1191-
if self.keys_to_allow:
1192-
event.resource['metadata'] = self.get_dict_with_allow_keys(
1185+
try:
1186+
# Update events resource metadata.
1187+
for event in self.events:
1188+
# Remove ignored keys.
1189+
event.resource['metadata'] = self.remove_ignored_keys(
11931190
event.resource['metadata'])
1194-
type(self)._trim_dict_values(
1195-
event.resource['metadata'],
1196-
MAX_METADATA_FIELD_SIZE_LIMIT
1197-
)
1191+
# Keep allowed keys.
1192+
if self.keys_to_allow:
1193+
event.resource['metadata'] = self.get_dict_with_allow_keys(
1194+
event.resource['metadata'])
1195+
type(self)._trim_dict_values(
1196+
event.resource['metadata'],
1197+
MAX_METADATA_FIELD_SIZE_LIMIT
1198+
)
1199+
except Exception as exception:
1200+
if self.debug:
1201+
print(
1202+
'Failed to send trace: '
1203+
'updating events resource metadata failed: {}'.format(
1204+
exception
1205+
)
1206+
)
1207+
return
11981208

11991209
try:
12001210
if self.runner:

epsagon/triggers/aws_lambda.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from importlib import import_module
88
import hashlib
99
import json
10-
from epsagon.utils import add_data_if_needed, parse_json
10+
from epsagon.utils import add_data_if_needed, parse_json, print_debug
1111
from ..event import BaseEvent
1212
from ..constants import EPSAGON_HEADER
1313

@@ -220,6 +220,7 @@ def __init__(self, start_time, event, context):
220220
'Notification Message',
221221
message
222222
)
223+
print_debug('Initialized SNS Lambda trigger')
223224

224225

225226
class SQSLambdaTrigger(BaseLambdaTrigger):

epsagon/wrappers/aws_lambda.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ def _lambda_wrapper(*args, **kwargs):
142142
epsagon.trace.trace_factory.send_traces()
143143
# pylint: disable=W0703
144144
except Exception:
145-
pass
145+
epsagon.utils.print_debug('Failed to send Lambda trace')
146146

147147
_lambda_wrapper.__instrumented__ = True
148148
return _lambda_wrapper

0 commit comments

Comments
 (0)