From 32ae855aef2048d3028072ebe1f586183a75b287 Mon Sep 17 00:00:00 2001 From: Leiyi Zhang Date: Thu, 13 Aug 2020 17:50:54 +0000 Subject: [PATCH 1/2] fix logic issue in metric name namespace filtering --- sdks/python/apache_beam/metrics/metric.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/sdks/python/apache_beam/metrics/metric.py b/sdks/python/apache_beam/metrics/metric.py index 4b5a2a5f7bab..8402ff305b49 100644 --- a/sdks/python/apache_beam/metrics/metric.py +++ b/sdks/python/apache_beam/metrics/metric.py @@ -130,10 +130,16 @@ def _matches_name(filter, metric_key): if not filter.names and not filter.namespaces: return True - if ((filter.namespaces and metric_key.metric.namespace in filter.namespaces) - or (filter.names and metric_key.metric.name in filter.names)): - return True - return False + if filter.names and filter.namespaces: + return (( + filter.namespaces and + metric_key.metric.namespace in filter.namespaces) and + (filter.names and metric_key.metric.name in filter.names)) + else: + return (( + filter.namespaces and + metric_key.metric.namespace in filter.namespaces) or + (filter.names and metric_key.metric.name in filter.names)) @staticmethod def _is_sub_list(needle, haystack): From 41e4505c2fb08efaabeef2b15d75f12753ad0239 Mon Sep 17 00:00:00 2001 From: Leiyi Zhang Date: Thu, 13 Aug 2020 19:54:31 +0000 Subject: [PATCH 2/2] refactor boolean logic to be more concise --- sdks/python/apache_beam/metrics/metric.py | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/sdks/python/apache_beam/metrics/metric.py b/sdks/python/apache_beam/metrics/metric.py index 8402ff305b49..1c68ad9b3061 100644 --- a/sdks/python/apache_beam/metrics/metric.py +++ b/sdks/python/apache_beam/metrics/metric.py @@ -127,19 +127,12 @@ class MetricResults(object): @staticmethod def _matches_name(filter, metric_key): - if not filter.names and not filter.namespaces: - return True - - if filter.names and filter.namespaces: - return (( - filter.namespaces and - metric_key.metric.namespace in filter.namespaces) and - (filter.names and metric_key.metric.name in filter.names)) + if ((filter.namespaces and + metric_key.metric.namespace not in filter.namespaces) or + (filter.names and metric_key.metric.name not in filter.names)): + return False else: - return (( - filter.namespaces and - metric_key.metric.namespace in filter.namespaces) or - (filter.names and metric_key.metric.name in filter.names)) + return True @staticmethod def _is_sub_list(needle, haystack):