From dcbe6d5cbed285a20fc15309b38f0fa6ab95f933 Mon Sep 17 00:00:00 2001 From: Dan Fuller Date: Fri, 17 Apr 2026 17:48:03 -0700 Subject: [PATCH] ref(flags): Remove organizations:on-demand-gen-metrics-deprecation-query-prefill The flag scanner classified this as flagpole-disabled. The flag gated an early-return branch in should_use_on_demand_metrics_for_querying; with it always False control falls through to should_use_on_demand_metrics regardless. Removes the short-circuit and its tests. Co-Authored-By: Claude Opus 4.7 (1M context) --- src/sentry/features/temporary.py | 1 - src/sentry/snuba/metrics/extraction.py | 7 -- .../search/events/builder/test_metrics.py | 65 ------------------- .../endpoints/test_organization_events_mep.py | 9 --- 4 files changed, 82 deletions(-) diff --git a/src/sentry/features/temporary.py b/src/sentry/features/temporary.py index 83c6cedf3fe8c0..c96bd32eb1f589 100644 --- a/src/sentry/features/temporary.py +++ b/src/sentry/features/temporary.py @@ -518,7 +518,6 @@ def register_temporary_features(manager: FeatureManager) -> None: # Enable Conversation focused views in AI Insights manager.add("organizations:gen-ai-conversations", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=True) manager.add("organizations:on-demand-gen-metrics-deprecation-prefill", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=False) - manager.add("organizations:on-demand-gen-metrics-deprecation-query-prefill", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=False) # Enables Conduit demo endpoint and UI manager.add("organizations:conduit-demo", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=True) # Enable hard timeout alarm for webhooks diff --git a/src/sentry/snuba/metrics/extraction.py b/src/sentry/snuba/metrics/extraction.py index 853f4b62925355..11f58dc9f375ee 100644 --- a/src/sentry/snuba/metrics/extraction.py +++ b/src/sentry/snuba/metrics/extraction.py @@ -590,13 +590,6 @@ def should_use_on_demand_metrics_for_querying(organization: Organization, **kwar logger.error("Add the feature flag to create the spec for this function.") return False - supported_by = _query_supported_by(**kwargs) - if ( - features.has("organizations:on-demand-gen-metrics-deprecation-query-prefill", organization) - and supported_by.on_demand_metrics - ): - return True - return should_use_on_demand_metrics(**kwargs) diff --git a/tests/sentry/search/events/builder/test_metrics.py b/tests/sentry/search/events/builder/test_metrics.py index c332229037115c..46d104594f0c5b 100644 --- a/tests/sentry/search/events/builder/test_metrics.py +++ b/tests/sentry/search/events/builder/test_metrics.py @@ -3520,71 +3520,6 @@ def test_run_query_with_spm_and_time_range_not_required_and_not_supplied(self) - snql_query.select, ) - def test_run_query_with_on_demand_deprecation_flag_enabled(self) -> None: - field = "count()" - query_s = "" - spec = OnDemandMetricSpec(field=field, query=query_s, spec_type=MetricSpecType.SIMPLE_QUERY) - - self.store_transaction_metric( - value=1, - metric=TransactionMetricKey.COUNT_ON_DEMAND.value, - internal_metric=TransactionMRI.COUNT_ON_DEMAND.value, - entity="metrics_counters", - tags={"query_hash": spec.query_hash}, - timestamp=self.start, - ) - - with Feature("organizations:on-demand-gen-metrics-deprecation-query-prefill"): - query = AlertMetricsQueryBuilder( - self.params, - granularity=3600, - time_range_window=3600, - query=query_s, - dataset=Dataset.PerformanceMetrics, - selected_columns=[field], - config=QueryBuilderConfig( - on_demand_metrics_enabled=True, - on_demand_metrics_type=MetricSpecType.SIMPLE_QUERY, - skip_time_conditions=False, - ), - ) - - # Verify the SNQL query structure uses on-demand metrics - snql_request = query.get_snql_query() - assert snql_request.dataset == "generic_metrics" - snql_query = snql_request.query - - self.assertEqual( - [ - Function( - "sumIf", - [ - Column("value"), - Function( - "equals", - [ - Column("metric_id"), - indexer.resolve( - UseCaseID.TRANSACTIONS, - 1, - "c:transactions/on_demand@none", - ), - ], - ), - ], - "c:transactions/on_demand@none", - ) - ], - snql_query.select, - ) - - result = query.run_query("test_query") - - assert result["data"] == [{"c:transactions/on_demand@none": 1.0}] - meta = result["meta"] - assert len(meta) == 1 - assert meta[0]["name"] == "c:transactions/on_demand@none" - def test_run_query_with_on_demand_deprecation_flag_disabled(self) -> None: field = "count()" query_s = "" diff --git a/tests/snuba/api/endpoints/test_organization_events_mep.py b/tests/snuba/api/endpoints/test_organization_events_mep.py index c33c7e72292408..d122358a79013d 100644 --- a/tests/snuba/api/endpoints/test_organization_events_mep.py +++ b/tests/snuba/api/endpoints/test_organization_events_mep.py @@ -3866,15 +3866,6 @@ def test_on_demand_count_unique(self) -> None: self._assert_on_demand_response(response, expected_on_demand_query=True) assert response.data["data"] == [{"count_unique(user)": 2}] - def test_on_demand_for_metrics_deprecation(self) -> None: - params = {"field": ["count()"], "query": "", "yAxis": "count()"} - specs = self._create_specs(params) - for spec in specs: - self.store_on_demand_metric(1, spec=spec) - with self.feature("organizations:on-demand-gen-metrics-deprecation-query-prefill"): - response = self._make_on_demand_request(params) - self._assert_on_demand_response(response) - def test_split_decision_for_errors_widget(self) -> None: error_data = load_data("python", timestamp=before_now(minutes=1)) self.store_event(