Skip to content

Commit 8dd3139

Browse files
authored
Merge branch 'master' into ryan953/rm-nonbadges
2 parents 6c0099e + b570036 commit 8dd3139

File tree

135 files changed

+2956
-1588
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

135 files changed

+2956
-1588
lines changed

CHANGES

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,35 @@
1+
24.4.0
2+
------
3+
4+
### Various fixes & improvements
5+
6+
- Revert "ref(stories): Collapse `app` root (#68939)" (13dcc607) by @getsentry-bot
7+
- feat(ui): Add `actor` to delegating Avatar component (#68933) by @evanpurkhiser
8+
- ref(ui): Consolidate TeamBadge (#68927) by @evanpurkhiser
9+
- ref(stories): Improve types on TreeMapping (#68940) by @evanpurkhiser
10+
- ref(stories): Collapse `app` root (#68939) by @evanpurkhiser
11+
- feat(perf): Use `@sentry/status-page-list` for domain status link (#68899) by @gggritso
12+
- deps(ui): Update react-router to latest v3, create-react-class (#68926) by @scttcper
13+
- fix(trace): fix drawer bg color (#68934) by @JonasBa
14+
- feat(issue-details): Revise Context UI behind feature flag (#68081) by @leeandher
15+
- Revert "feat(replay): Persist has-viewed state to the server when replays are seen (#68743)" (ad312261) by @getsentry-bot
16+
- feat(perf): Bump "Requests" module from "Alpha" to "Beta" (#68930) by @gggritso
17+
- feat(perf): Adjust HTTP sample table column widths (#68901) by @gggritso
18+
- chore(self-hosted): 24.3.0 release tests (#67091) by @hubertdeng123
19+
- deps(ui): Remove react-test-renderer (#68929) by @scttcper
20+
- fix(trace): fix text overlaps (#68928) by @JonasBa
21+
- fix(replay): Fix canvas replays when seeking without actively playing (#68646) by @billyvg
22+
- fix(perf): Link Response module domains to a specific project (#68905) by @gggritso
23+
- chore(issues): Remove legacy browser flag from BE (#67717) by @leeandher
24+
- ref(uI): Cleanup unused ts-ignore after update (#68924) by @scttcper
25+
- fix(replay): Fixes type error if same param is in url (#68851) by @c298lee
26+
- fix(bug): logging bug (#68919) by @ykamo001
27+
- fix(crons): Update slug in quotas when deleting monitors (#68917) by @evanpurkhiser
28+
- chore(relocation): Add server-side Sentry capture logging (#68906) by @azaslavsky
29+
- feat(replays): Delete videos on replay delete request (#68463) by @cmanallen
30+
31+
_Plus 1311 more_
32+
133
24.3.0
234
------
335

migrations_lockfile.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@ feedback: 0004_index_together
99
hybridcloud: 0016_add_control_cacheversion
1010
nodestore: 0002_nodestore_no_dictfield
1111
replays: 0004_index_together
12-
sentry: 0696_remove_monitor_owner_actor_id
12+
sentry: 0697_remove_monitor_owner_actor_id_db
1313
social_auth: 0002_default_auto_field

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
"@sentry/node": "^7.109.0",
6363
"@sentry/react": "^7.109.0",
6464
"@sentry/release-parser": "^1.3.1",
65+
"@sentry/status-page-list": "^0.0.1",
6566
"@sentry/types": "^7.109.0",
6667
"@sentry/utils": "^7.109.0",
6768
"@spotlightjs/spotlight": "^1.2.13",
@@ -86,7 +87,7 @@
8687
"@types/react-lazyload": "3.2.3",
8788
"@types/react-grid-layout": "^1.3.2",
8889
"@types/react-mentions": "4.1.6",
89-
"@types/react-router": "^3.0.22",
90+
"@types/react-router": "^3.0.28",
9091
"@types/react-select": "4.0.18",
9192
"@types/react-sparklines": "^1.7.2",
9293
"@types/react-virtualized": "^9.21.22",
@@ -157,7 +158,7 @@
157158
"react-lazyload": "^3.2.1",
158159
"react-mentions": "4.4.2",
159160
"react-popper": "^2.3.0",
160-
"react-router": "3.2.0",
161+
"react-router": "3.2.6",
161162
"react-select": "4.3.1",
162163
"react-sparklines": "1.7.0",
163164
"react-virtualized": "^9.22.5",
@@ -203,7 +204,6 @@
203204
"jest-sentry-environment": "3.0.0",
204205
"postcss-styled-syntax": "0.6.4",
205206
"react-refresh": "0.14.0",
206-
"react-test-renderer": "18.2.0",
207207
"stylelint": "16.2.1",
208208
"stylelint-config-recommended": "^14.0.0",
209209
"terser": "5.27.0",

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -589,6 +589,7 @@ disable_error_code = [
589589
[[tool.mypy.overrides]]
590590
module = [
591591
"sentry.api.endpoints.issues.*",
592+
"sentry.api.helpers.source_map_helper",
592593
"sentry.buffer.base",
593594
"sentry.buffer.redis",
594595
"sentry.eventstore.reprocessing.redis",

requirements-base.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,10 @@ rfc3986-validator>=0.1.1
6464
# [end] jsonschema format validators
6565
sentry-arroyo>=2.16.5
6666
sentry-kafka-schemas>=0.1.68
67-
sentry-ophio==0.2.6
67+
sentry-ophio==0.2.7
6868
sentry-redis-tools>=0.1.7
6969
sentry-relay>=0.8.56
70-
sentry-sdk>=2.0.0rc5
70+
sentry-sdk==2.0.0rc3
7171
snuba-sdk>=2.0.32
7272
simplejson>=3.17.6
7373
sqlparse>=0.4.4

requirements-dev-frozen.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,10 +181,10 @@ sentry-devenv==1.6.2
181181
sentry-forked-django-stubs==4.2.7.post3
182182
sentry-forked-djangorestframework-stubs==3.14.5.post1
183183
sentry-kafka-schemas==0.1.68
184-
sentry-ophio==0.2.6
184+
sentry-ophio==0.2.7
185185
sentry-redis-tools==0.1.7
186186
sentry-relay==0.8.56
187-
sentry-sdk==2.0.0rc5
187+
sentry-sdk==2.0.0rc3
188188
sentry-usage-accountant==0.0.10
189189
simplejson==3.17.6
190190
six==1.16.0

requirements-frozen.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,10 +121,10 @@ rsa==4.8
121121
s3transfer==0.10.0
122122
sentry-arroyo==2.16.5
123123
sentry-kafka-schemas==0.1.68
124-
sentry-ophio==0.2.6
124+
sentry-ophio==0.2.7
125125
sentry-redis-tools==0.1.7
126126
sentry-relay==0.8.56
127-
sentry-sdk==2.0.0rc5
127+
sentry-sdk==2.0.0rc3
128128
sentry-usage-accountant==0.0.10
129129
simplejson==3.17.6
130130
six==1.16.0

setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[metadata]
22
name = sentry
3-
version = 24.4.0.dev0
3+
version = 24.5.0.dev0
44
description = A realtime logging and aggregation server.
55
long_description = file: README.md
66
long_description_content_type = text/markdown

src/sentry/api/bases/organization_events.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from urllib.parse import quote as urlquote
77

88
import sentry_sdk
9+
from django.http import HttpRequest
910
from django.utils import timezone
1011
from rest_framework.exceptions import ParseError, ValidationError
1112
from rest_framework.request import Request
@@ -125,7 +126,7 @@ def get_snuba_dataclass(
125126
return params, filter_params
126127

127128
def get_snuba_params(
128-
self, request: Request, organization: Organization, check_global_views: bool = True
129+
self, request: HttpRequest, organization: Organization, check_global_views: bool = True
129130
) -> ParamsType:
130131
with sentry_sdk.start_span(op="discover.endpoint", description="filter_params"):
131132
if (

src/sentry/api/endpoints/organization_events_trace.py

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from collections.abc import Callable, Iterable, Mapping, Sequence
44
from concurrent.futures import ThreadPoolExecutor, as_completed
55
from datetime import datetime, timedelta
6-
from typing import Any, Deque, Optional, TypedDict, TypeVar, cast
6+
from typing import Any, Deque, Optional, TypedDict, TypeVar
77

88
import sentry_sdk
99
from django.http import Http404, HttpRequest, HttpResponse
@@ -44,11 +44,13 @@
4444
"SnubaTransaction",
4545
{
4646
"id": str,
47+
"issue_occurrences": Sequence[IssueOccurrence],
4748
"transaction.status": int,
4849
"transaction.op": str,
4950
"transaction.duration": int,
5051
"transaction": str,
5152
"timestamp": str,
53+
"occurrence_spans": Sequence[dict[str, object]],
5254
"precise.start_ts": int,
5355
"precise.finish_ts": int,
5456
"trace.span": str,
@@ -187,7 +189,7 @@ def nodestore_event(self) -> Event | None:
187189
)
188190
return self._nodestore_event
189191

190-
def load_performance_issues(self, light: bool, snuba_params: ParamsType) -> None:
192+
def load_performance_issues(self, light: bool, snuba_params: ParamsType | None) -> None:
191193
"""Doesn't get suspect spans, since we don't need that for the light view"""
192194
for group_id in self.event["issue.ids"]:
193195
group = Group.objects.filter(id=group_id, project=self.event["project.id"]).first()
@@ -322,7 +324,7 @@ def full_dict(
322324
return
323325
else:
324326
visited.add(self.event["id"])
325-
result = cast(FullResponse, self.to_dict())
327+
result = self.to_dict()
326328
if detailed and "transaction.status" in self.event:
327329
result.update(
328330
{
@@ -423,7 +425,7 @@ def count_performance_issues(trace_id: str, params: Mapping[str, str]) -> int:
423425
)
424426
transaction_query.columns.append(Function("count()", alias="total_groups"))
425427
count = transaction_query.run_query("api.trace-view.count-performance-issues")
426-
return cast(int, count["data"][0].get("total_groups", 0))
428+
return count["data"][0].get("total_groups", 0)
427429

428430

429431
@sentry_sdk.tracing.trace
@@ -593,9 +595,7 @@ def query_trace_data(
593595
for key, value in zip(result["measurements.key"], result["measurements.value"])
594596
}
595597

596-
return cast(Sequence[SnubaTransaction], transformed_results[0]), cast(
597-
Sequence[SnubaError], transformed_results[1]
598-
)
598+
return transformed_results[0], transformed_results[1]
599599

600600

601601
def build_span_query(trace_id, spans_params, query_spans):
@@ -886,16 +886,16 @@ def get(self, request: HttpRequest, organization: Organization, trace_id: str) -
886886
return Response(status=404)
887887

888888
# Detailed is deprecated now that we want to use spans instead
889-
detailed: bool = request.GET.get("detailed", "0") == "1"
889+
detailed = request.GET.get("detailed", "0") == "1"
890890
# Temporary url params until we finish migrating the frontend
891-
use_spans: bool = request.GET.get("useSpans", "0") == "1"
891+
use_spans = request.GET.get("useSpans", "0") == "1"
892892
update_snuba_params_with_timestamp(request, params)
893893

894894
sentry_sdk.set_tag("trace_view.using_spans", str(use_spans))
895895
if detailed and use_spans:
896896
raise ParseError("Cannot return a detailed response while using spans")
897-
limit: int = min(int(request.GET.get("limit", MAX_TRACE_SIZE)), 10_000)
898-
event_id: str | None = request.GET.get("event_id") or request.GET.get("eventId")
897+
limit = min(int(request.GET.get("limit", MAX_TRACE_SIZE)), 10_000)
898+
event_id = request.GET.get("event_id") or request.GET.get("eventId")
899899

900900
# Only need to validate event_id as trace_id is validated in the URL
901901
if event_id and not is_event_id(event_id):
@@ -1318,9 +1318,11 @@ def serialize(
13181318
parent_events[child_event["id"]] = TraceEvent(
13191319
child_event,
13201320
current_event["id"],
1321-
previous_event.generation + 1
1322-
if previous_event.generation is not None
1323-
else None,
1321+
(
1322+
previous_event.generation + 1
1323+
if previous_event.generation is not None
1324+
else None
1325+
),
13241326
snuba_params=params,
13251327
)
13261328
# Add this event to its parent's children

src/sentry/api/endpoints/user_details.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
from sentry.models.organizationmapping import OrganizationMapping
2727
from sentry.models.organizationmembermapping import OrganizationMemberMapping
2828
from sentry.models.user import User
29+
from sentry.models.useremail import UserEmail
2930
from sentry.services.hybrid_cloud.organization import organization_service
3031
from sentry.services.hybrid_cloud.organization.model import RpcOrganizationDeleteState
3132
from sentry.services.hybrid_cloud.user.serial import serialize_generic_user
@@ -184,6 +185,13 @@ def put(self, request: Request, user) -> Response:
184185
:param string default_issue_event: Event displayed by default, "recommended", "latest" or "oldest"
185186
:auth: required
186187
"""
188+
if "username" in request.data:
189+
verified_email_found = UserEmail.objects.filter(
190+
user_id=user.id, email=request.data["username"], is_verified=True
191+
).exists()
192+
if not verified_email_found:
193+
return Response({"detail": "Verified email address is not found."}, status=400)
194+
187195
# We want to prevent superusers from setting users to superuser or staff
188196
# because this is only done through _admin. This will always be enforced
189197
# once the feature flag is removed.

src/sentry/api/helpers/default_inbound_filters.py

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
from sentry import features
21
from sentry.ingest import inbound_filters
32

43

@@ -13,29 +12,17 @@ def set_default_inbound_filters(
1312
"filtered-transaction",
1413
),
1514
):
16-
if features.has("organizations:legacy-browser-update", organization):
17-
browser_subfilters = [
18-
"ie",
19-
"firefox",
20-
"chrome",
21-
"safari",
22-
"opera",
23-
"opera_mini",
24-
"android",
25-
"edge",
26-
]
27-
else:
28-
browser_subfilters = [
29-
"ie_pre_9",
30-
"ie9",
31-
"ie10",
32-
"ie11",
33-
"safari_pre_6",
34-
"opera_pre_15",
35-
"opera_mini_pre_8",
36-
"android_pre_4",
37-
"edge_pre_79",
38-
]
15+
16+
browser_subfilters = [
17+
"ie",
18+
"firefox",
19+
"chrome",
20+
"safari",
21+
"opera",
22+
"opera_mini",
23+
"android",
24+
"edge",
25+
]
3926

4027
for filter_id in filters:
4128
state: dict[str, bool | list[str]] = {}

0 commit comments

Comments
 (0)