summary refs log tree commit diff
path: root/synapse/storage/stats.py
diff options
context:
space:
mode:
authorOlivier Wilkinson (reivilibre) <olivier@librepush.net>2019-08-29 14:10:21 +0100
committerOlivier Wilkinson (reivilibre) <olivier@librepush.net>2019-08-29 14:10:21 +0100
commit39dbee2a3e129415e2c20aa9a4f5f866e723fe41 (patch)
treef392fbcfefd4a35b46da7c08a7d68de0eb300ab1 /synapse/storage/stats.py
parentUpdate total_events and total_event_bytes on new events. (diff)
downloadsynapse-39dbee2a3e129415e2c20aa9a4f5f866e723fe41.tar.xz
Count total_events and total_event_bytes within the loop.
In this case, we still update these counts if we get stuck in the loop
because the server is busy.

Signed-off-by: Olivier Wilkinson (reivilibre) <olivier@librepush.net>
Diffstat (limited to 'synapse/storage/stats.py')
-rw-r--r--synapse/storage/stats.py13
1 files changed, 9 insertions, 4 deletions
diff --git a/synapse/storage/stats.py b/synapse/storage/stats.py
index 8cfa694d31..9d6c3027d5 100644
--- a/synapse/storage/stats.py
+++ b/synapse/storage/stats.py
@@ -487,9 +487,12 @@ class StatsStore(StateDeltasStore):
             in_positions (dict): Positions,
                 as retrieved from L{get_stats_positions}.
 
-        Returns (dict):
-            The new positions. Note that this is for reference only –
-            the new positions WILL be committed by this function.
+        Returns (Deferred[tuple[dict, bool]]):
+            First element (dict):
+                The new positions. Note that this is for reference only –
+                the new positions WILL be committed by this function.
+            Second element (bool):
+                true iff there was a change to the positions, false otherwise
         """
 
         def incremental_update_total_events_and_bytes_txn(txn):
@@ -518,7 +521,9 @@ class StatsStore(StateDeltasStore):
 
                 self._update_stats_positions_txn(txn, positions)
 
-            return positions
+                return positions, True
+            else:
+                return positions, False
 
         return self.runInteraction(
             "stats_incremental_total_events_and_bytes",