8000 fix: Actually strip frame vars · etherscan-io/sentry-python@a5893b4 · GitHub
[go: up one dir, main page]

Skip to content

Commit a5893b4

Browse files
committed
fix: Actually strip frame vars
1 parent c4ebca8 commit a5893b4

File tree

5 files changed

+64
-27
lines changed

5 files changed

+64
-27
lines changed

sentry_sdk/client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
from sentry_sdk._compat import string_types
77
from sentry_sdk.utils import (
8-
strip_event,
8+
strip_event_mut,
99
flatten_metadata,
1010
convert_types,
1111
handle_in_app,
@@ -129,7 +129,7 @@ def _prepare_event(self, event, hint, scope):
129129
# Postprocess the event in the very end so that annotated types do
130130
# generally not surface in before_send
131131
if event is not None:
132-
event = strip_event(event)
132+
strip_event_mut(event)
133133
event = flatten_metadata(event)
134134
event = convert_types(event)
135135

sentry_sdk/utils.py

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -556,22 +556,35 @@ def inner(obj):
556556
return obj
557557

558558

559-
def strip_event(event):
560-
old_frames = event.get("stacktrace", {}).get("frames", None)
561-
if old_frames:
562-
event["stacktrace"]["frames"] = [strip_frame(frame) for frame in old_frames]
559+
def strip_event_mut(event):
560+
strip_stacktrace_mut(event.get("stacktrace", None))
561+
exception = event.get("exception", None)
562+
if exception:
563+
for exception in exception.get("values", None) or ():
564+
strip_stacktrace_mut(exception.get("stacktrace", None))
563565

564-
old_request_data = event.get("request", {}).get("data", None)
565-
if old_request_data:
566-
event["request"]["data"] = strip_databag(old_request_data)
566+
strip_request_mut(event.get("request", None))
567567

568-
return event
568+
569+
def strip_stacktrace_mut(stacktrace):
570+
if not stacktrace:
571+
return
572+
for frame in stacktrace.get("frames", None) or ():
573+
strip_frame_mut(frame)
574+
575+
576+
def strip_request_mut(request):
577+
if not request:
578+
return
579+
data = request.get("data", None)
580+
if not data:
581+
return
582+
request["data"] = strip_databag(data)
569583

570584

571-
def strip_frame(frame):
585+
def strip_frame_mut(frame):
572586
if "vars" in frame:
573587
frame["vars"] = strip_databag(frame["vars"])
574-
return frame
575588
576589

577590
def convert_types(obj):

tests/test_event.py

Lines changed: 0 additions & 15 deletions
This file was deleted.

tests/utils/test_event.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import sys
2+
import json
3+
4+
from sentry_sdk.utils import (
5+
AnnotatedValue,
6+
convert_types,
7+
event_from_exception,
8+
flatten_metadata,
9+
strip_databag,
10+
strip_event_mut,
11+
)
12+
13+
14+
def test_flatten_metadata():
15+
assert flatten_metadata({"foo": u"bar"}) == {"foo": u"bar"}
16+
assert flatten_metadata({"foo": ["bar"]}) == {"foo": [u"bar"]}
17+
assert flatten_metadata({"foo": [AnnotatedValue("bar", u"meta")]}) == {
18+
"foo": [u"bar"],
19+
"_meta": {"foo": {"0": {"": u"meta"}}},
20+
}
21+
22+
23+
def test_strip_databag():
24+
d = strip_databag({"foo": u"a" * 2000})
25+
assert len(d["foo"].value) == 512
26+
27+
28+
def test_strip_exception_vars():
29+
try:
30+
a = "A" * 16000 # noqa
31+
1 / 0
32+
except Exception:
33+
event, _ = event_from_exception(sys.exc_info())
34+
35+
assert len(json.dumps(event)) > 10000
36+
strip_event_mut(event)
37+
event = flatten_metadata(event)
38+
event = convert_types(event)
39+
assert len(json.dumps(event)) < 10000
File renamed without changes.

0 commit comments

Comments
 (0)
0