Skip to content

Commit 8431a94

Browse files
author
Brett Beutell
committed
Ensure set_build_info is only called once
1 parent bf5a9ab commit 8431a94

File tree

3 files changed

+19
-16
lines changed

3 files changed

+19
-16
lines changed

src/autometrics/tracker/opentelemetry.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def __init__(self):
6868
name=BUILD_INFO_NAME,
6969
description=BUILD_INFO_DESCRIPTION,
7070
)
71-
self.__exporter = exporter
71+
self._has_set_build_info = False
7272

7373
def __count(
7474
self,
@@ -127,13 +127,14 @@ def __histogram(
127127

128128
def set_build_info(self, commit: str, version: str):
129129
"""Observe the build info."""
130-
self.__up_down_counter_instance.add(
131-
1.0,
132-
attributes={
133-
"commit": commit,
134-
"version": version,
135-
},
136-
)
130+
if not self._has_set_build_info:
131+
self.__up_down_counter_instance.add(
132+
1.0,
133+
attributes={
134+
"commit": commit,
135+
"version": version,
136+
},
137+
)
137138

138139
def finish(
139140
self,

src/autometrics/tracker/prometheus.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ class PrometheusTracker:
4949
BUILD_INFO_NAME, BUILD_INFO_DESCRIPTION, [COMMIT_KEY, VERSION_KEY]
5050
)
5151

52+
def __init__(self) -> None:
53+
self._has_set_build_info = False
54+
5255
def _count(
5356
self,
5457
func_name: str,
@@ -101,8 +104,9 @@ def _histogram(
101104
).observe(duration)
102105

103106
def set_build_info(self, commit: str, version: str):
104-
"""Observe the build info."""
105-
self.prom_gauge.labels(commit, version).set(1)
107+
"""Observe the build info. Should only be called once per tracker instance"""
108+
if not self._has_set_build_info:
109+
self.prom_gauge.labels(commit, version).set(1)
106110

107111
# def start(self, function: str = None, module: str = None):
108112
# """Start tracking metrics for a function call."""

src/autometrics/tracker/test_tracker.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@
44
from .opentelemetry import OpenTelemetryTracker
55
from .prometheus import PrometheusTracker
66

7-
from .tracker import default_tracker, create_tracker, TrackerType
8-
9-
tracker_types = [TrackerType.PROMETHEUS, TrackerType.OPENTELEMETRY]
7+
from .tracker import default_tracker, create_tracker, set_tracker, TrackerType
108

119

1210
def test_default_tracker(monkeypatch):
@@ -57,9 +55,9 @@ def test_create_otel_tracker_set_build_info(monkeypatch):
5755
Test that create_tracker (for an OTEL tracker) calls set_build_info using env vars.
5856
Note that the OTEL collector translates metrics to Prometheus.
5957
"""
60-
# pytest.skip(
61-
# "Skipping test because OTEL collector does not create a gauge when it translates UpDownCounter to Prometheus"
62-
# )
58+
pytest.skip(
59+
"Skipping test because OTEL collector does not create a gauge when it translates UpDownCounter to Prometheus"
60+
)
6361

6462
commit = "a29a178"
6563
version = "0.0.1"

0 commit comments

Comments
 (0)