Skip to content

Commit 6e129b6

Browse files
committed
Now create the breadcrumbs
1 parent fb7bfef commit 6e129b6

File tree

3 files changed

+27
-0
lines changed

3 files changed

+27
-0
lines changed

sentry_sdk/integrations/redis/_async_common.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
)
88
from sentry_sdk.integrations.redis.modules.queries import _compile_db_span_properties
99
from sentry_sdk.integrations.redis.utils import (
10+
_create_breadcrumb,
1011
_get_client_data,
1112
_get_pipeline_data,
1213
_update_span,
@@ -52,6 +53,7 @@ async def _sentry_execute(self, *args, **kwargs):
5253
),
5354
)
5455
_update_span(span, span_data, pipeline_data)
56+
_create_breadcrumb("redis.pipeline.execute", span_data, pipeline_data)
5557

5658
return await old_execute(self, *args, **kwargs)
5759

@@ -98,6 +100,7 @@ async def _sentry_execute_command(self, name, *args, **kwargs):
98100
db_span_data = get_db_data_fn(self)
99101
db_client_span_data = _get_client_data(is_cluster, name, *args)
100102
_update_span(db_span, db_span_data, db_client_span_data)
103+
_create_breadcrumb(db_properties["op"], db_span_data, db_client_span_data)
101104

102105
value = await old_execute_command(self, name, *args, **kwargs)
103106

sentry_sdk/integrations/redis/_sync_common.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
)
88
from sentry_sdk.integrations.redis.modules.queries import _compile_db_span_properties
99
from sentry_sdk.integrations.redis.utils import (
10+
_create_breadcrumb,
1011
_get_client_data,
1112
_get_pipeline_data,
1213
_update_span,
@@ -51,6 +52,7 @@ def sentry_patched_execute(self, *args, **kwargs):
5152
command_stack=self.command_stack,
5253
)
5354
_update_span(span, span_data, pipeline_data)
55+
_create_breadcrumb("redis.pipeline.execute", span_data, pipeline_data)
5456

5557
return old_execute(self, *args, **kwargs)
5658

@@ -101,6 +103,7 @@ def sentry_patched_execute_command(self, name, *args, **kwargs):
101103
db_span_data = get_db_data_fn(self)
102104
db_client_span_data = _get_client_data(is_cluster, name, *args)
103105
_update_span(db_span, db_span_data, db_client_span_data)
106+
_create_breadcrumb(db_properties["op"], db_span_data, db_client_span_data)
104107

105108
value = old_execute_command(self, name, *args, **kwargs)
106109

sentry_sdk/integrations/redis/utils.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import sentry_sdk
12
from sentry_sdk.consts import SPANDATA
23
from sentry_sdk.integrations.redis.consts import (
34
_COMMANDS_INCLUDING_SENSITIVE_DATA,
@@ -27,6 +28,9 @@
2728

2829
def _update_span(span, *data_bags):
2930
# type: (Span, *dict[str, Any]) -> None
31+
"""
32+
Set tags and data on the given span to data from the given data bags.
33+
"""
3034
for data in data_bags:
3135
for key, value in data.items():
3236
if key in TAG_KEYS:
@@ -35,6 +39,23 @@ def _update_span(span, *data_bags):
3539
span.set_data(key, value)
3640

3741

42+
def _create_breadcrumb(message, *data_bags):
43+
# type: (str, *dict[str, Any]) -> None
44+
"""
45+
Create a breadcrumb containing the data from the given data bags.
46+
"""
47+
combined_data = {}
48+
for data in data_bags:
49+
combined_data.update(data)
50+
51+
sentry_sdk.add_breadcrumb(
52+
message=message,
53+
type="redis",
54+
category="redis",
55+
data=combined_data,
56+
)
57+
58+
3859
def _get_safe_command(name, args):
3960
# type: (str, Sequence[Any]) -> str
4061
command_parts = [name]

0 commit comments

Comments
 (0)