From 440c60ef8f6840c48c388e5f9c9789743f3d172c Mon Sep 17 00:00:00 2001 From: "Olivier Wilkinson (reivilibre)" Date: Fri, 30 Aug 2019 15:05:57 +0100 Subject: Some fixes that have become necessary due to changes in other PRs Signed-off-by: Olivier Wilkinson (reivilibre) --- synapse/storage/stats.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/synapse/storage/stats.py b/synapse/storage/stats.py index 9386e9e150..5f8ab9464f 100644 --- a/synapse/storage/stats.py +++ b/synapse/storage/stats.py @@ -157,9 +157,8 @@ class StatsStore(StateDeltasStore): and return its previous positions – atomically. """ - with self.stats_delta_processing_lock: - old = self._get_stats_positions_txn(txn, for_initial_processor=False) - self._update_stats_positions_txn(txn, None, for_initial_processor=False) + old = self._get_stats_positions_txn(txn, for_initial_processor=False) + self._update_stats_positions_txn(txn, None, for_initial_processor=False) return old @@ -210,13 +209,17 @@ class StatsStore(StateDeltasStore): WHERE completed_delta_stream_id IS NULL """ - for _k, (table, id_col) in TYPE_TO_TABLE: + for _k, (table, id_col) in TYPE_TO_TABLE.items(): txn.execute(sql % (table,)) # first wedge the incremental processor and reset our promise - old_positions = yield self.runInteraction( - "populate_stats_wedge", _wedge_incremental_processor - ) + yield self.stats_delta_processing_lock.acquire() + try: + old_positions = yield self.runInteraction( + "populate_stats_wedge", _wedge_incremental_processor + ) + finally: + yield self.stats_delta_processing_lock.release() if None in old_positions.values(): old_positions = None @@ -229,7 +232,8 @@ class StatsStore(StateDeltasStore): yield self._unwedge_incremental_processor(old_positions) - yield self.runInteraction("populate_stats_make_skeletons", _make_skeletons) + yield self.runInteraction("populate_stats_make_skeletons", _make_skeletons, "room") + yield self.runInteraction("populate_stats_make_skeletons", _make_skeletons, "user") self.get_earliest_token_for_stats.invalidate_all() yield self._end_background_update("populate_stats_prepare") -- cgit 1.4.1 From 065042c3253bc8c1176eb5dc8e7e1ed682731325 Mon Sep 17 00:00:00 2001 From: "Olivier Wilkinson (reivilibre)" Date: Fri, 30 Aug 2019 15:08:26 +0100 Subject: Code formatting and typo pointed out by Erik. Signed-off-by: Olivier Wilkinson (reivilibre) --- synapse/storage/stats.py | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/synapse/storage/stats.py b/synapse/storage/stats.py index 5f8ab9464f..4925f5b62b 100644 --- a/synapse/storage/stats.py +++ b/synapse/storage/stats.py @@ -232,8 +232,12 @@ class StatsStore(StateDeltasStore): yield self._unwedge_incremental_processor(old_positions) - yield self.runInteraction("populate_stats_make_skeletons", _make_skeletons, "room") - yield self.runInteraction("populate_stats_make_skeletons", _make_skeletons, "user") + yield self.runInteraction( + "populate_stats_make_skeletons", _make_skeletons, "room" + ) + yield self.runInteraction( + "populate_stats_make_skeletons", _make_skeletons, "user" + ) self.get_earliest_token_for_stats.invalidate_all() yield self._end_background_update("populate_stats_prepare") @@ -264,10 +268,11 @@ class StatsStore(StateDeltasStore): # Get how many are left to process, so we can give status on how # far we are in processing - txn.execute( - "SELECT COUNT(*) FROM room_stats_current" - " WHERE completed_delta_stream_id IS NULL" - ) + sql = """ + SELECT COUNT(*) FROM user_stats_current + WHERE completed_delta_stream_id IS NULL + """ + txn.execute(sql) progress["remaining"] = txn.fetchone()[0] return users_to_work_on @@ -389,10 +394,10 @@ class StatsStore(StateDeltasStore): # Get how many are left to process, so we can give status on how # far we are in processing - txn.execute( - "SELECT COUNT(*) FROM room_stats_current" - " WHERE completed_delta_stream_id IS NULL" - ) + sql = """ + SELECT COUNT(*) FROM room_stats_current + WHERE completed_delta_stream_id IS NULL + """ progress["remaining"] = txn.fetchone()[0] return rooms_to_work_on -- cgit 1.4.1