diff --git a/py/sentry_relay/ _lowlevel.pyi b/py/sentry_relay/_lowlevel.pyi similarity index 100% rename from py/sentry_relay/ _lowlevel.pyi rename to py/sentry_relay/_lowlevel.pyi diff --git a/relay-dynamic-config/src/feature.rs b/relay-dynamic-config/src/feature.rs index d206b0a7ab6..338efc5b292 100644 --- a/relay-dynamic-config/src/feature.rs +++ b/relay-dynamic-config/src/feature.rs @@ -107,10 +107,6 @@ pub enum Feature { /// See . #[serde(rename = "projects:relay-upload-multipart")] UploadMultipart, - /// Enable relay billing outcome generation. - #[serde(rename = "organizations:relay-generate-billing-outcome")] - GenerateBillingOutcome, - /// Enables OTLP spans to use the Span V2 processing pipeline in Relay. /// /// This is now the default behaviour of Relay. diff --git a/relay-server/src/services/processor.rs b/relay-server/src/services/processor.rs index 31f0c5ed63e..95d2d22cc04 100644 --- a/relay-server/src/services/processor.rs +++ b/relay-server/src/services/processor.rs @@ -1196,7 +1196,6 @@ impl EnvelopeProcessorService { ) { use crate::constants::DEFAULT_EVENT_RETENTION; use crate::services::store::StoreMetrics; - use relay_dynamic_config::Feature; for ProjectBuckets { buckets, @@ -1213,16 +1212,10 @@ impl EnvelopeProcessorService { continue; } - if project_info - .config - .features - .has(Feature::GenerateBillingOutcome) - { - // Emit metric billing outcomes. - self.inner - .metric_outcomes - .track_accepted_outcome(scoping, &mut buckets); - } + // Emit metric billing outcomes. + self.inner + .metric_outcomes + .track_accepted_outcome(scoping, &mut buckets); let retention = project_info .config diff --git a/tests/integration/test_spans.py b/tests/integration/test_spans.py index b377f85b293..bf089a70285 100644 --- a/tests/integration/test_spans.py +++ b/tests/integration/test_spans.py @@ -1100,8 +1100,16 @@ def test_discard_transaction( spans = spans_consumer.get_spans(n=2) assert len(spans) == 2 - outcomes = outcomes_consumer.get_outcomes() - assert [(o["category"], o["outcome"], o["reason"]) for o in outcomes] == [ + outcomes = outcomes_consumer.get_outcomes(n=3) + + outcomes.sort(key=lambda o: o["outcome"]) + + # skip billing outcomes + assert outcomes[0]["outcome"] == 0 + assert outcomes[1]["outcome"] == 0 + + o = outcomes[2] + assert [(o["category"], o["outcome"], o["reason"])] == [ (9, 1, "discarded"), # TransactionIndexed, Filtered ]