mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-02 11:06:07 -04:00
Add experimental configuration option to allow disabling legacy Prometheus metric names. (#13540)
Co-authored-by: David Robertson <davidr@element.io>
This commit is contained in:
parent
2e2040c93e
commit
be4250c7a8
9 changed files with 150 additions and 21 deletions
|
@ -12,7 +12,16 @@
|
|||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
try:
|
||||
from importlib import metadata
|
||||
except ImportError:
|
||||
import importlib_metadata as metadata # type: ignore[no-redef]
|
||||
|
||||
from unittest.mock import patch
|
||||
|
||||
from pkg_resources import parse_version
|
||||
|
||||
from synapse.app._base import _set_prometheus_client_use_created_metrics
|
||||
from synapse.metrics import REGISTRY, InFlightGauge, generate_latest
|
||||
from synapse.util.caches.deferred_cache import DeferredCache
|
||||
|
||||
|
@ -162,3 +171,30 @@ class CacheMetricsTests(unittest.HomeserverTestCase):
|
|||
|
||||
self.assertEqual(items["synapse_util_caches_cache_size"], "1.0")
|
||||
self.assertEqual(items["synapse_util_caches_cache_max_size"], "777.0")
|
||||
|
||||
|
||||
class PrometheusMetricsHackTestCase(unittest.HomeserverTestCase):
|
||||
if parse_version(metadata.version("prometheus_client")) < parse_version("0.14.0"):
|
||||
skip = "prometheus-client too old"
|
||||
|
||||
def test_created_metrics_disabled(self) -> None:
|
||||
"""
|
||||
Tests that a brittle hack, to disable `_created` metrics, works.
|
||||
This involves poking at the internals of prometheus-client.
|
||||
It's not the end of the world if this doesn't work.
|
||||
|
||||
This test gives us a way to notice if prometheus-client changes
|
||||
their internals.
|
||||
"""
|
||||
import prometheus_client.metrics
|
||||
|
||||
PRIVATE_FLAG_NAME = "_use_created"
|
||||
|
||||
# By default, the pesky `_created` metrics are enabled.
|
||||
# Check this assumption is still valid.
|
||||
self.assertTrue(getattr(prometheus_client.metrics, PRIVATE_FLAG_NAME))
|
||||
|
||||
with patch("prometheus_client.metrics") as mock:
|
||||
setattr(mock, PRIVATE_FLAG_NAME, True)
|
||||
_set_prometheus_client_use_created_metrics(False)
|
||||
self.assertFalse(getattr(mock, PRIVATE_FLAG_NAME, False))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue