Skip to content

Commit e21c9ad

Browse files
authored
ref(event_manager): Fix typing issues for event_manager (#52974)
We want to make a lot of changes to event_manager and we need to have backend typing in place for the upcoming work. Fixes #52877 --------- Co-authored-by: Armen Zambrano G <[email protected]>
1 parent ab18007 commit e21c9ad

File tree

7 files changed

+33
-39
lines changed

7 files changed

+33
-39
lines changed

pyproject.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -442,7 +442,6 @@ module = [
442442
"sentry.discover.endpoints.discover_key_transactions",
443443
"sentry.discover.endpoints.serializers",
444444
"sentry.discover.tasks",
445-
"sentry.event_manager",
446445
"sentry.eventstore.base",
447446
"sentry.eventstore.compressor",
448447
"sentry.eventstore.models",
@@ -1156,7 +1155,6 @@ module = [
11561155
"tests.sentry.eventstore.test_models",
11571156
"tests.sentry.eventstream.kafka.test_protocol",
11581157
"tests.sentry.eventstream.test_eventstream",
1159-
"tests.sentry.eventtypes.test_default",
11601158
"tests.sentry.eventtypes.test_error",
11611159
"tests.sentry.features.test_manager",
11621160
"tests.sentry.grouping.test_enhancer",

src/sentry/attachments/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
__all__ = ["attachment_cache", "CachedAttachment"]
1+
__all__ = ["attachment_cache", "CachedAttachment", "MissingAttachmentChunks"]
22

33
from django.conf import settings
44

src/sentry/event_manager.py

Lines changed: 12 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
Optional,
2020
Sequence,
2121
Tuple,
22-
Type,
2322
TypedDict,
2423
Union,
2524
cast,
@@ -55,15 +54,8 @@
5554
from sentry.culprit import generate_culprit
5655
from sentry.dynamic_sampling import LatestReleaseBias, LatestReleaseParams
5756
from sentry.eventstore.processing import event_processing_store
58-
from sentry.eventtypes import (
59-
CspEvent,
60-
DefaultEvent,
61-
ErrorEvent,
62-
ExpectCTEvent,
63-
ExpectStapleEvent,
64-
HpkpEvent,
65-
TransactionEvent,
66-
)
57+
from sentry.eventtypes import EventType
58+
from sentry.eventtypes.transaction import TransactionEvent
6759
from sentry.grouping.api import (
6860
BackgroundGroupingConfigLoader,
6961
GroupingConfig,
@@ -660,7 +652,7 @@ def save_error_events(
660652
with metrics.timer("event_manager.save_attachments"):
661653
save_attachments(cache_key, attachments, job)
662654

663-
metric_tags = {"from_relay": "_relay_processed" in job["data"]}
655+
metric_tags = {"from_relay": str("_relay_processed" in job["data"])}
664656

665657
metrics.timing(
666658
"events.latency",
@@ -1260,13 +1252,15 @@ def _tsdb_record_all_metrics(jobs: Sequence[Job]) -> None:
12601252
records.append((TSDBModel.users_affected_by_project, project_id, (user.tag_value,)))
12611253

12621254
if incrs:
1263-
tsdb.incr_multi(incrs, timestamp=event.datetime, environment_id=environment.id)
1255+
tsdb.backend.incr_multi(incrs, timestamp=event.datetime, environment_id=environment.id)
12641256

12651257
if records:
1266-
tsdb.record_multi(records, timestamp=event.datetime, environment_id=environment.id)
1258+
tsdb.backend.record_multi(
1259+
records, timestamp=event.datetime, environment_id=environment.id
1260+
)
12671261

12681262
if frequencies:
1269-
tsdb.record_frequency_multi(frequencies, timestamp=event.datetime)
1263+
tsdb.backend.record_frequency_multi(frequencies, timestamp=event.datetime)
12701264

12711265

12721266
@metrics.wraps("save_event.nodestore_save_many")
@@ -1438,17 +1432,6 @@ def _get_event_user_impl(
14381432
return euser
14391433

14401434

1441-
EventType = Union[
1442-
DefaultEvent,
1443-
ErrorEvent,
1444-
CspEvent,
1445-
HpkpEvent,
1446-
ExpectCTEvent,
1447-
ExpectStapleEvent,
1448-
TransactionEvent,
1449-
]
1450-
1451-
14521435
def get_event_type(data: Mapping[str, Any]) -> EventType:
14531436
return eventtypes.get(data.get("type", "default"))()
14541437

@@ -1922,7 +1905,7 @@ def _process_existing_aggregate(
19221905
return bool(is_regression)
19231906

19241907

1925-
Attachment = Type[CachedAttachment]
1908+
Attachment = CachedAttachment
19261909

19271910

19281911
def discard_event(job: Job, attachments: Sequence[Attachment]) -> None:
@@ -1938,7 +1921,7 @@ def discard_event(job: Job, attachments: Sequence[Attachment]) -> None:
19381921

19391922
project = job["event"].project
19401923

1941-
quotas.refund(
1924+
quotas.backend.refund(
19421925
project,
19431926
key=job["project_key"],
19441927
timestamp=job["start_time"],
@@ -1975,7 +1958,7 @@ def discard_event(job: Job, attachments: Sequence[Attachment]) -> None:
19751958
)
19761959

19771960
if attachment_quantity:
1978-
quotas.refund(
1961+
quotas.backend.refund(
19791962
project,
19801963
key=job["project_key"],
19811964
timestamp=job["start_time"],
@@ -2099,7 +2082,7 @@ def filter_attachments_for_group(attachments: list[Attachment], job: Job) -> lis
20992082
cache.set(crashreports_key, max_crashreports, CRASH_REPORT_TIMEOUT)
21002083

21012084
if refund_quantity:
2102-
quotas.refund(
2085+
quotas.backend.refund(
21032086
project,
21042087
key=job["project_key"],
21052088
timestamp=job["start_time"],

src/sentry/eventtypes/__init__.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from typing import Union
2+
13
from .base import DefaultEvent
24
from .error import ErrorEvent
35
from .generic import GenericEvent
@@ -17,3 +19,13 @@
1719

1820
get = default_manager.get
1921
register = default_manager.register
22+
23+
EventType = Union[
24+
DefaultEvent,
25+
ErrorEvent,
26+
CspEvent,
27+
HpkpEvent,
28+
ExpectCTEvent,
29+
ExpectStapleEvent,
30+
TransactionEvent,
31+
]

src/sentry/grouping/result.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
from dataclasses import dataclass
22
from typing import Any, Dict, List, Optional, Sequence, TypedDict, Union
33

4+
from sentry.db.models import NodeData
45
from sentry.utils.safe import get_path, safe_execute, set_path
56

6-
EventData = Dict[str, Any]
77
EventMetadata = Dict[str, Any]
88

99

@@ -63,7 +63,7 @@ def _strip_tree_label(tree_label: TreeLabel, truncate: bool = False) -> Stripped
6363
return rv
6464

6565

66-
def _write_tree_labels(tree_labels: Sequence[Optional[TreeLabel]], event_data: EventData) -> None:
66+
def _write_tree_labels(tree_labels: Sequence[Optional[TreeLabel]], event_data: NodeData) -> None:
6767
event_labels: List[Optional[StrippedTreeLabel]] = []
6868
event_data["hierarchical_tree_labels"] = event_labels
6969

@@ -97,7 +97,7 @@ class CalculatedHashes:
9797
hierarchical_hashes: Sequence[str]
9898
tree_labels: Sequence[Optional[TreeLabel]]
9999

100-
def write_to_event(self, event_data: EventData) -> None:
100+
def write_to_event(self, event_data: NodeData) -> None:
101101
event_data["hashes"] = self.hashes
102102

103103
if self.hierarchical_hashes:
@@ -106,7 +106,7 @@ def write_to_event(self, event_data: EventData) -> None:
106106
safe_execute(_write_tree_labels, self.tree_labels, event_data, _with_transaction=False)
107107

108108
@classmethod
109-
def from_event(cls, event_data: EventData) -> Optional["CalculatedHashes"]:
109+
def from_event(cls, event_data: NodeData) -> Optional["CalculatedHashes"]:
110110
hashes = event_data.get("hashes")
111111
hierarchical_hashes = event_data.get("hierarchical_hashes") or []
112112
tree_labels = event_data.get("hierarchical_tree_labels") or []

src/sentry/tsdb/__init__.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from .base import BaseTSDB
66
from .dummy import DummyTSDB
77

8-
LazyServiceWrapper(
8+
backend = LazyServiceWrapper(
99
BaseTSDB, settings.SENTRY_TSDB, settings.SENTRY_TSDB_OPTIONS, dangerous=[DummyTSDB]
10-
).expose(locals())
10+
)
11+
backend.expose(locals())

tests/sentry/eventtypes/test_default.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from sentry.eventtypes import DefaultEvent
1+
from sentry.eventtypes.base import DefaultEvent
22
from sentry.testutils import TestCase
33
from sentry.testutils.silo import region_silo_test
44

0 commit comments

Comments
 (0)