Просмотр исходного кода

fix(indexer): Allow more characters in units (#67949)

Allow more characters in the units section of mri [inc-698]
Nikhar Saxena 11 месяцев назад
Родитель
Сommit
e6312a20bc

+ 2 - 2
src/sentry/snuba/metrics/naming_layer/mri.py

@@ -68,8 +68,8 @@ def _build_namespace_regex() -> str:
 
 MRI_METRIC_TYPE_REGEX = r"(c|s|d|g|e)"
 MRI_NAMESPACE_REGEX = _build_namespace_regex()
-MRI_NAME_REGEX = r"([a-zA-Z0-9_]+(?:\.[a-zA-Z0-9_]+)*)"
-MRI_UNIT_REGEX = r"[\w.]*"
+MRI_NAME_REGEX = r"([a-zA-Z0-9_/.]+)"
+MRI_UNIT_REGEX = r"[\s\S\r\n]*"
 MRI_SCHEMA_REGEX_STRING = rf"(?P<entity>{MRI_METRIC_TYPE_REGEX}):(?P<namespace>{MRI_NAMESPACE_REGEX})/(?P<name>{MRI_NAME_REGEX})@(?P<unit>{MRI_UNIT_REGEX})"
 MRI_SCHEMA_REGEX = re.compile(rf"^{MRI_SCHEMA_REGEX_STRING}$")
 MRI_EXPRESSION_REGEX = re.compile(rf"^{OP_REGEX}\(({MRI_SCHEMA_REGEX_STRING})\)$")

+ 0 - 6
tests/sentry/snuba/metrics/test_naming_layer.py

@@ -75,12 +75,6 @@ def test_valid_mri_schema_regex(name):
 @pytest.mark.parametrize(
     "name",
     [
-        "e:sessions/healthy.@",
-        "e:sessions/healthy..@",
-        "e:sessions/healthy..crashed@",
-        "e:sessions/.healthy@",
-        "e:sessions/..healthy@",
-        "e:sessions/healthy..crashed.crashed@",
         "t:sessions/error.preaggr@none",
         "e:foo/error.preaggr@none" "foo.bar",
     ],

+ 5 - 0
tests/snuba/metrics/naming_layer/test_mri.py

@@ -13,6 +13,11 @@ class TestMRIUtils(TestCase):
         assert format_mri_field("avg(c:custom/foo@none)") == "avg(foo)"
         assert format_mri_field("max(s:spans/user@none)") == "max(user)"
         assert format_mri_field("sum(d:spans/exclusive_time@millisecond)") == "sum(exclusive_time)"
+        assert (
+            format_mri_field("sum(c:custom/http.client.active_requests@{request})")
+            == "sum(http.client.active_requests)"
+        )
+        assert format_mri_field("sum(c:custom/foo...bar@{request})") == "sum(foo...bar)"
         assert format_mri_field("invalid_mri_field") == "invalid_mri_field"
         assert format_mri_field(cast(str, None)) is None