Skip to content

Commit de0a4a6

Browse files
Merge branch 'master' into mihir/fix/explorer-chat-thinking-block-flicker
2 parents 231cd82 + c2b23ac commit de0a4a6

File tree

114 files changed

+4860
-680
lines changed

Some content is hidden

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

114 files changed

+4860
-680
lines changed

.github/CODEOWNERS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -571,7 +571,9 @@ tests/sentry/api/endpoints/test_organization_attribute_mappings.py @get
571571
/src/sentry/dynamic_sampling/ @getsentry/telemetry-experience
572572
/tests/sentry/dynamic_sampling/ @getsentry/telemetry-experience
573573
/src/sentry/release_health/metrics_sessions_v2.py @getsentry/telemetry-experience
574+
/src/sentry/release_health/eap_sessions_rollout.py @getsentry/telemetry-experience
574575
/tests/sentry/release_health/test_metrics_sessions_v2.py @getsentry/telemetry-experience
576+
/tests/sentry/release_health/test_eap_sessions_rollout.py @getsentry/telemetry-experience
575577
/src/sentry/utils/platform_categories.py @getsentry/telemetry-experience
576578
/src/sentry/sentry_metrics/querying/ @getsentry/telemetry-experience
577579
/tests/sentry/sentry_metrics/querying/ @getsentry/telemetry-experience
@@ -794,6 +796,7 @@ tests/sentry/api/endpoints/test_organization_attribute_mappings.py @get
794796
/src/sentry/preprod/ @getsentry/emerge-tools
795797
/static/app/views/preprod/ @getsentry/emerge-tools
796798
/tests/sentry/preprod/ @getsentry/emerge-tools
799+
/static/app/components/events/eventInsightDiff.tsx @getsentry/emerge-tools
797800
/bin/preprod/ @getsentry/emerge-tools
798801
# End of preprod
799802

.github/codeowners-coverage-baseline.txt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,6 @@ bin/load-integration-data
4646
bin/load-mocks
4747
bin/merge-catalogs
4848
bin/model-dependency-graphviz
49-
bin/preprod/test_pr_details
50-
bin/preprod/trigger_pr_comment
51-
bin/preprod/trigger_size_status_check
52-
bin/preprod/trigger_snapshot_status_check
5349
bin/run-model-tests
5450
bin/save-integration-data
5551
bin/send_metrics.py
@@ -1507,6 +1503,8 @@ static/gsAdmin/components/addGiftBudgetAction.tsx
15071503
static/gsAdmin/components/addGiftEventsAction.spec.tsx
15081504
static/gsAdmin/components/addGiftEventsAction.tsx
15091505
static/gsAdmin/components/addOrRemoveOrgModal.tsx
1506+
static/gsAdmin/components/addToStartupProgramAction.spec.tsx
1507+
static/gsAdmin/components/addToStartupProgramAction.tsx
15101508
static/gsAdmin/components/adminConfirmationModal.spec.tsx
15111509
static/gsAdmin/components/adminConfirmationModal.tsx
15121510
static/gsAdmin/components/beacons/beaconCheckins.tsx

src/sentry/api/bases/organization_events.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -831,6 +831,7 @@ def get_additional_queries(self, request: Request) -> AdditionalQueries:
831831
span=request.GET.getlist("spanQuery"),
832832
log=request.GET.getlist("logQuery"),
833833
metric=request.GET.getlist("metricQuery"),
834+
occurrences=request.GET.getlist("occurrencesQuery"),
834835
)
835836

836837

src/sentry/api/endpoints/organization_trace_item_attributes.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -818,7 +818,7 @@ def string_autocomplete_function(self) -> list[TagValue]:
818818

819819
values: Sequence[str] = rpc_response.values
820820
if self.context_definition:
821-
context = self.context_definition.constructor(self.snuba_params)
821+
context = self.context_definition.constructor(self.snuba_params, self.resolver)
822822
values = [context.value_map.get(value, value) for value in values]
823823

824824
return [

src/sentry/api/serializers/models/organization.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
AUTO_ENABLE_CODE_REVIEW,
3535
AUTO_OPEN_PRS_DEFAULT,
3636
CONSOLE_SDK_INVITE_QUOTA_DEFAULT,
37+
DASHBOARDS_ASYNC_QUEUE_PARALLEL_LIMIT_DEFAULT,
3738
DATA_CONSENT_DEFAULT,
3839
DEBUG_FILES_ROLE_DEFAULT,
3940
DEFAULT_AUTOFIX_AUTOMATION_TUNING_DEFAULT,
@@ -511,6 +512,7 @@ class _DetailedOrganizationSerializerResponseOptional(OrganizationSerializerResp
511512
ingestThroughTrustedRelaysOnly: bool
512513
enabledConsolePlatforms: list[str]
513514
consoleSdkInviteQuota: int
515+
dashboardsAsyncQueueParallelLimit: int
514516

515517

516518
@extend_schema_serializer(exclude_fields=["availableRoles"])
@@ -793,6 +795,11 @@ def serialize( # type: ignore[override]
793795
CONSOLE_SDK_INVITE_QUOTA_DEFAULT,
794796
)
795797

798+
context["dashboardsAsyncQueueParallelLimit"] = obj.get_option(
799+
"sentry:dashboards-async-queue-parallel-limit",
800+
DASHBOARDS_ASYNC_QUEUE_PARALLEL_LIMIT_DEFAULT,
801+
)
802+
796803
if access.role is not None:
797804
context["role"] = access.role # Deprecated
798805
context["orgRole"] = access.role
@@ -824,6 +831,7 @@ def serialize( # type: ignore[override]
824831
"ingestThroughTrustedRelaysOnly",
825832
"enabledConsolePlatforms",
826833
"consoleSdkInviteQuota",
834+
"dashboardsAsyncQueueParallelLimit",
827835
"hasGranularReplayPermissions",
828836
"replayAccessMembers",
829837
]

src/sentry/constants.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -733,6 +733,7 @@ class InsightModules(Enum):
733733
SEER_AUTOMATED_RUN_STOPPING_POINT_DEFAULT = "code_changes"
734734
ENABLED_CONSOLE_PLATFORMS_DEFAULT: list[str] = []
735735
CONSOLE_SDK_INVITE_QUOTA_DEFAULT = 0
736+
DASHBOARDS_ASYNC_QUEUE_PARALLEL_LIMIT_DEFAULT = 20
736737

737738
INGEST_THROUGH_TRUSTED_RELAYS_ONLY_DEFAULT = "disabled"
738739

src/sentry/core/endpoints/organization_details.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
AUTO_ENABLE_CODE_REVIEW,
4747
AUTO_OPEN_PRS_DEFAULT,
4848
CONSOLE_SDK_INVITE_QUOTA_DEFAULT,
49+
DASHBOARDS_ASYNC_QUEUE_PARALLEL_LIMIT_DEFAULT,
4950
DEBUG_FILES_ROLE_DEFAULT,
5051
DEFAULT_AUTOFIX_AUTOMATION_TUNING_DEFAULT,
5152
DEFAULT_CODE_REVIEW_TRIGGERS,
@@ -289,6 +290,12 @@
289290
int,
290291
CONSOLE_SDK_INVITE_QUOTA_DEFAULT,
291292
),
293+
(
294+
"dashboardsAsyncQueueParallelLimit",
295+
"sentry:dashboards-async-queue-parallel-limit",
296+
int,
297+
DASHBOARDS_ASYNC_QUEUE_PARALLEL_LIMIT_DEFAULT,
298+
),
292299
)
293300

294301
DELETION_STATUSES = frozenset(
@@ -361,6 +368,7 @@ class OrganizationSerializer(BaseOrganizationSerializer):
361368
allow_empty=True,
362369
)
363370
consoleSdkInviteQuota = serializers.IntegerField(required=False, min_value=0)
371+
dashboardsAsyncQueueParallelLimit = serializers.IntegerField(required=False, min_value=1)
364372
enableSeerEnhancedAlerts = serializers.BooleanField(required=False)
365373
enableSeerCoding = serializers.BooleanField(required=False)
366374
defaultCodingAgent = serializers.CharField(required=False, allow_null=True)

src/sentry/deletions/models/scheduleddeletion.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class BaseScheduledDeletion(Model):
3333
the tasks/deletion/scheduled.py job in the future. They are cancellable, and provide automatic, batched cascade
3434
in an async way for performance reasons.
3535
36-
Note that BOTH region AND control silos need to be able to schedule deletions of different records that will be
36+
Note that BOTH cell AND control silos need to be able to schedule deletions of different records that will be
3737
reconciled in different places. For that reason, the ScheduledDeletion model is split into two identical models
3838
representing this split. Use the corresponding ScheduledDeletion based on the silo of the model being scheduled
3939
for deletion.
@@ -139,9 +139,9 @@ def get_actor(self) -> RpcUser | None:
139139
class ScheduledDeletion(BaseScheduledDeletion):
140140
"""
141141
This model schedules deletions to be processed in control and monolith silo modes. All historic schedule deletions
142-
occur in this table. In the future, when RegionScheduledDeletions have proliferated for the appropriate models,
143-
we will allow any region models scheduled in this table to finish processing before ensuring that all models discretely
144-
process in either this table or the region table.
142+
occur in this table. In the future, when CellScheduledDeletions have proliferated for the appropriate models,
143+
we will allow any cell models scheduled in this table to finish processing before ensuring that all models discretely
144+
process in either this table or the cell table.
145145
"""
146146

147147
class Meta:
@@ -165,7 +165,7 @@ class Meta:
165165
db_table = "sentry_regionscheduleddeletion"
166166

167167

168-
def get_regional_scheduled_deletion(mode: SiloMode) -> type[BaseScheduledDeletion]:
168+
def get_cell_scheduled_deletion(mode: SiloMode) -> type[BaseScheduledDeletion]:
169169
if mode != SiloMode.CONTROL:
170170
return CellScheduledDeletion
171171
return ScheduledDeletion

src/sentry/features/temporary.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,8 @@ def register_temporary_features(manager: FeatureManager) -> None:
223223
manager.add("organizations:performance-transaction-deprecation-banner", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=True)
224224
# Enable preprod frontend routes
225225
manager.add("organizations:preprod-frontend-routes", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=True)
226+
# Enable preprod_artifact webhook subscription UI in Sentry App settings
227+
manager.add("organizations:preprod-artifact-webhooks", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=True)
226228
# Enable preprod issue reporting
227229
manager.add("organizations:preprod-issues", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=True)
228230
# Enable preprod PR comments for build distribution
@@ -324,6 +326,8 @@ def register_temporary_features(manager: FeatureManager) -> None:
324326
# Enable GitLab as a supported SCM provider for Seer
325327
manager.add("organizations:seer-gitlab-support", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=True)
326328
# Disable select orgs from ingesting mobile replay events.
329+
# Enable double-read from EAP for session health data validation
330+
manager.add("organizations:session-health-eap", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=False)
327331
manager.add("organizations:session-replay-video-disabled", OrganizationFeature, FeatureHandlerStrategy.INTERNAL, api_expose=False)
328332
# Enable data scrubbing of replay recording payloads in Relay.
329333
manager.add("organizations:session-replay-recording-scrubbing", OrganizationFeature, FeatureHandlerStrategy.INTERNAL, api_expose=False)
@@ -427,6 +431,9 @@ def register_temporary_features(manager: FeatureManager) -> None:
427431
# Use workflow engine exclusively for ProjectRuleDetailsEndpoint.get results.
428432
# See src/sentry/workflow_engine/docs/legacy_backport.md for context.
429433
manager.add("organizations:workflow-engine-projectruledetailsendpoint-get", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=False)
434+
# Use workflow engine exclusively for OrganizationCombinedRuleIndexEndpoint.get results.
435+
# See src/sentry/workflow_engine/docs/legacy_backport.md for context.
436+
manager.add("organizations:workflow-engine-combinedruleindex-get", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=False)
430437
# Enable metric detector limits by plan type
431438
manager.add("organizations:workflow-engine-metric-detector-limit", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=True)
432439
# Enable EventUniqueUserFrequencyConditionWithConditions special alert condition

src/sentry/hybridcloud/services/organization_mapping/model.py

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,8 @@
44
# defined, because we want to reflect on type annotations and avoid forward references.
55

66
from datetime import datetime
7-
from typing import Any
87

98
from django.utils import timezone
10-
from pydantic import root_validator
119
from pydantic.fields import Field
1210

1311
from sentry.hybridcloud.rpc import RpcModel
@@ -25,19 +23,6 @@ class RpcOrganizationMapping(RpcOrganizationSummary):
2523
status: int | None = None
2624
flags: RpcOrganizationMappingFlags = Field(default_factory=RpcOrganizationMappingFlags)
2725

28-
# TODO(cells): remove once region_name -> cell_name rename is complete
29-
@property
30-
def region_name(self) -> str:
31-
return self.cell_name
32-
33-
# TODO(cells): temporary code to accept `cell_name` and `region_name` before property rename is complete
34-
@root_validator(pre=True)
35-
@classmethod
36-
def _accept_region_name(cls, values: dict[str, Any]) -> dict[str, Any]:
37-
if "region_name" in values and "cell_name" not in values:
38-
values["cell_name"] = values.pop("region_name")
39-
return values
40-
4126

4227
class CustomerId(RpcModel):
4328
value: str | None
@@ -49,19 +34,6 @@ class RpcOrganizationMappingUpdate(RpcModel):
4934
slug: str = ""
5035
cell_name: str = ""
5136

52-
# TODO(cells): remove once region_name -> cell_name rename is complete
53-
@property
54-
def region_name(self) -> str:
55-
return self.cell_name
56-
57-
# TODO(cells): temporary code to accept `cell_name` and `region_name` before property rename is complete
58-
@root_validator(pre=True)
59-
@classmethod
60-
def _accept_region_name(cls, values: dict[str, Any]) -> dict[str, Any]:
61-
if "region_name" in values and "cell_name" not in values:
62-
values["cell_name"] = values.pop("region_name")
63-
return values
64-
6537
# When not set, no change to customer id performed,
6638
# when set with a CustomerId, the customer_id set to either None or string
6739
customer_id: CustomerId | None = None

0 commit comments

Comments
 (0)