This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch v2-10-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/v2-10-test by this push:
new 5b9208a9950 [v2-10-test] Allow "/" in metrics validator (#42934)
(#44515)
5b9208a9950 is described below
commit 5b9208a99508c975c4e6c3376cdbb5204611c69a
Author: Jarek Potiuk <[email protected]>
AuthorDate: Sun Dec 1 00:28:02 2024 +0100
[v2-10-test] Allow "/" in metrics validator (#42934) (#44515)
* Allow "/" to avoid ERROR - Invalid stat name:
dag_processing.processes,file_path=/mnt/c
* Add UT
* Reformat
(cherry picked from commit 14b32eae6761075a9546647f47ba35705c9bac03)
Co-authored-by: awdavidson <[email protected]>
---
airflow/metrics/validators.py | 2 +-
tests/core/test_stats.py | 4 ++++
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/airflow/metrics/validators.py b/airflow/metrics/validators.py
index 111ad9b87df..d69e57762c2 100644
--- a/airflow/metrics/validators.py
+++ b/airflow/metrics/validators.py
@@ -44,7 +44,7 @@ class MetricNameLengthExemptionWarning(Warning):
# Only characters in the character set are considered valid
# for the stat_name if stat_name_default_handler is used.
-ALLOWED_CHARACTERS = frozenset(string.ascii_letters + string.digits + "_.-")
+ALLOWED_CHARACTERS = frozenset(string.ascii_letters + string.digits + "_.-/")
# The following set contains existing metrics whose names are too long for
# OpenTelemetry and should be deprecated over time. This is implemented to
diff --git a/tests/core/test_stats.py b/tests/core/test_stats.py
index 902a0ed0037..e0386cab1b9 100644
--- a/tests/core/test_stats.py
+++ b/tests/core/test_stats.py
@@ -506,6 +506,10 @@ class TestStatsWithInfluxDBEnabled:
)
self.statsd_client.incr.assert_called_once_with("test_stats_run.delay,key0=0,key1=val1",
1, 1)
+ def test_increment_counter_with_tags_and_forward_slash(self):
+ self.stats.incr("test_stats_run.dag", tags={"path":
"/some/path/dag.py"})
+
self.statsd_client.incr.assert_called_once_with("test_stats_run.dag,path=/some/path/dag.py",
1, 1)
+
def test_does_not_increment_counter_drops_invalid_tags(self):
self.stats.incr(
"test_stats_run.delay",