Skip to content

Commit 7f1f05d

Browse files
authored
fix: More nodestore stats fixes (getsentry#23117)
* sizes are not comparable if they compress differently, use sort_keys * Using the event class goes through renormalization while we don't want that * Going through interfaces, in all likelihood, mutates the event dict in-place
1 parent ea9a1a6 commit 7f1f05d

File tree

2 files changed

+8
-14
lines changed

2 files changed

+8
-14
lines changed

src/sentry/tasks/post_process.py

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -432,7 +432,7 @@ def _spawn_capture_nodestore_stats(event):
432432

433433

434434
def _json_size(data):
435-
bytestring = json.dumps(data).encode("utf8")
435+
bytestring = json.dumps(data, sort_keys=True).encode("utf8")
436436
cctx = zstandard.ZstdCompressor()
437437
return len(cctx.compress(bytestring))
438438

@@ -445,23 +445,15 @@ def capture_nodestore_stats(project_id, event_id):
445445
from sentry.eventstore.compressor import deduplicate
446446
from sentry.eventstore.models import Event
447447

448-
event = Event(project_id=project_id, event_id=event_id)
449-
old_event_size = _json_size(dict(event.data))
448+
node_id = Event.generate_node_id(project_id, event_id)
449+
data = nodestore.get(node_id)
450450

451-
if not event.data:
451+
if not data:
452452
metrics.incr("eventstore.compressor.error", tags={"reason": "no_data"})
453453
return
454454

455-
platform = event.platform
456-
457-
for key, value in six.iteritems(event.interfaces):
458-
len_value = _json_size(value.to_json())
459-
metrics.timing(
460-
"events.size.interface", len_value, tags={"interface": key, "platform": platform}
461-
)
462-
463-
new_data, extra_keys = deduplicate(dict(event.data))
464-
455+
old_event_size = _json_size(data)
456+
new_data, extra_keys = deduplicate(dict(data))
465457
total_size = event_size = _json_size(new_data)
466458

467459
for key, value in six.iteritems(extra_keys):

tests/sentry/eventstore/test_compressor.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ def get_extra_keys(checksums):
2323

2424

2525
def test_basic():
26+
assert deduplicate({}) == ({}, {})
27+
2628
_assert_roundtrip({})
2729
_assert_roundtrip({"debug_meta": {}})
2830
_assert_roundtrip({"debug_meta": None})

0 commit comments

Comments
 (0)