Skip to content

Commit ccd14e4

Browse files
author
Riccardo Busetti
authored
fix(metrics_layer): Fix the failure rate calculation (#68160)
1 parent ece1aba commit ccd14e4

File tree

3 files changed

+25
-3
lines changed

3 files changed

+25
-3
lines changed

src/sentry/snuba/metrics/fields/base.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
abnormal_sessions,
2424
abnormal_users,
2525
addition,
26+
all_duration_transactions,
2627
all_sessions,
2728
all_spans,
2829
all_transactions,
@@ -1607,6 +1608,14 @@ def generate_where_statements(
16071608
project_ids=project_ids, org_id=org_id, metric_ids=metric_ids, alias=alias
16081609
),
16091610
),
1611+
SingularEntityDerivedMetric(
1612+
metric_mri=TransactionMRI.ALL_DURATION.value,
1613+
metrics=[TransactionMRI.DURATION.value],
1614+
unit="transactions",
1615+
snql=lambda project_ids, org_id, metric_ids, alias=None: all_duration_transactions(
1616+
metric_ids=metric_ids, alias=alias
1617+
),
1618+
),
16101619
SingularEntityDerivedMetric(
16111620
metric_mri=TransactionMRI.FAILURE_COUNT.value,
16121621
metrics=[TransactionMRI.DURATION.value],
@@ -1619,7 +1628,7 @@ def generate_where_statements(
16191628
metric_mri=TransactionMRI.FAILURE_RATE.value,
16201629
metrics=[
16211630
TransactionMRI.FAILURE_COUNT.value,
1622-
TransactionMRI.ALL.value,
1631+
TransactionMRI.ALL_DURATION.value,
16231632
],
16241633
unit="transactions",
16251634
snql=lambda failure_count, tx_count, project_ids, org_id, metric_ids, alias=None: division_float(
@@ -1638,7 +1647,7 @@ def generate_where_statements(
16381647
metric_mri=TransactionMRI.HTTP_ERROR_RATE.value,
16391648
metrics=[
16401649
TransactionMRI.HTTP_ERROR_COUNT.value,
1641-
TransactionMRI.ALL.value,
1650+
TransactionMRI.ALL_DURATION.value,
16421651
],
16431652
unit="transactions",
16441653
snql=lambda http_error_count, tx_count, project_ids, org_id, metric_ids, alias=None: division_float(

src/sentry/snuba/metrics/fields/snql.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,7 @@ def _satisfaction_equivalence(org_id: int, satisfaction_tag_value: str) -> Funct
476476
)
477477

478478

479-
def _metric_id_equivalence(metric_condition: Function) -> Function:
479+
def _metric_id_equivalence(metric_condition: Function | int) -> Function:
480480
return Function(
481481
"equals",
482482
[
@@ -560,6 +560,18 @@ def all_transactions(
560560
)
561561

562562

563+
def all_duration_transactions(
564+
metric_ids: Sequence[int],
565+
alias: str | None = None,
566+
) -> Function:
567+
return _count_if_with_conditions(
568+
[
569+
_metric_id_equivalence(list(metric_ids)[0]),
570+
],
571+
alias,
572+
)
573+
574+
563575
def apdex(satisfactory_snql, tolerable_snql, total_snql, alias: str | None = None) -> Function:
564576
return division_float(
565577
arg1_snql=addition(satisfactory_snql, division_float(tolerable_snql, 2)),

src/sentry/snuba/metrics/naming_layer/mri.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ class TransactionMRI(Enum):
151151

152152
# Derived
153153
ALL = "e:transactions/all@none"
154+
ALL_DURATION = "e:transactions/all_duration@none"
154155
FAILURE_COUNT = "e:transactions/failure_count@none"
155156
FAILURE_RATE = "e:transactions/failure_rate@ratio"
156157
SATISFIED = "e:transactions/satisfied@none"

0 commit comments

Comments
 (0)