summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--changelog.d/5461.feature1
-rw-r--r--synapse/metrics/__init__.py1
-rw-r--r--synapse/storage/events.py3
-rw-r--r--tests/storage/test_event_metrics.py20
4 files changed, 13 insertions, 12 deletions
diff --git a/changelog.d/5461.feature b/changelog.d/5461.feature
new file mode 100644
index 0000000000..9497f521c8
--- /dev/null
+++ b/changelog.d/5461.feature
@@ -0,0 +1 @@
+Statistics on forward extremities per room are now exposed via Prometheus.
diff --git a/synapse/metrics/__init__.py b/synapse/metrics/__init__.py
index 0d3ae1a43d..8aee14a8a8 100644
--- a/synapse/metrics/__init__.py
+++ b/synapse/metrics/__init__.py
@@ -224,7 +224,6 @@ class BucketCollector(object):
             for i, bound in enumerate(self.buckets):
                 if x <= bound:
                     buckets[bound] = buckets.get(bound, 0) + data[x]
-                    break
 
         for i in self.buckets:
             res.append([str(i), buckets.get(i, 0)])
diff --git a/synapse/storage/events.py b/synapse/storage/events.py
index 1578403f79..f631fb1733 100644
--- a/synapse/storage/events.py
+++ b/synapse/storage/events.py
@@ -228,7 +228,8 @@ class EventsStore(
         self._state_resolution_handler = hs.get_state_resolution_handler()
 
         # Collect metrics on the number of forward extremities that exist.
-        self._current_forward_extremities_amount = {}
+        # Counter of number of extremities to count
+        self._current_forward_extremities_amount = c_counter()
 
         BucketCollector(
             "synapse_forward_extremities",
diff --git a/tests/storage/test_event_metrics.py b/tests/storage/test_event_metrics.py
index 1655fcdafc..19f9ccf5e0 100644
--- a/tests/storage/test_event_metrics.py
+++ b/tests/storage/test_event_metrics.py
@@ -64,16 +64,16 @@ class ExtremStatisticsTestCase(HomeserverTestCase):
         expected = set([
             b'synapse_forward_extremities_bucket{le="1.0"} 0.0',
             b'synapse_forward_extremities_bucket{le="2.0"} 2.0',
-            b'synapse_forward_extremities_bucket{le="3.0"} 0.0',
-            b'synapse_forward_extremities_bucket{le="5.0"} 0.0',
-            b'synapse_forward_extremities_bucket{le="7.0"} 1.0',
-            b'synapse_forward_extremities_bucket{le="10.0"} 0.0',
-            b'synapse_forward_extremities_bucket{le="15.0"} 0.0',
-            b'synapse_forward_extremities_bucket{le="20.0"} 0.0',
-            b'synapse_forward_extremities_bucket{le="50.0"} 0.0',
-            b'synapse_forward_extremities_bucket{le="100.0"} 0.0',
-            b'synapse_forward_extremities_bucket{le="200.0"} 0.0',
-            b'synapse_forward_extremities_bucket{le="500.0"} 0.0',
+            b'synapse_forward_extremities_bucket{le="3.0"} 2.0',
+            b'synapse_forward_extremities_bucket{le="5.0"} 2.0',
+            b'synapse_forward_extremities_bucket{le="7.0"} 3.0',
+            b'synapse_forward_extremities_bucket{le="10.0"} 3.0',
+            b'synapse_forward_extremities_bucket{le="15.0"} 3.0',
+            b'synapse_forward_extremities_bucket{le="20.0"} 3.0',
+            b'synapse_forward_extremities_bucket{le="50.0"} 3.0',
+            b'synapse_forward_extremities_bucket{le="100.0"} 3.0',
+            b'synapse_forward_extremities_bucket{le="200.0"} 3.0',
+            b'synapse_forward_extremities_bucket{le="500.0"} 3.0',
             b'synapse_forward_extremities_bucket{le="+Inf"} 3.0',
             b'synapse_forward_extremities_count 3.0',
             b'synapse_forward_extremities_sum 10.0',