Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Rename 'populate_stats_process_rooms_2' background job back to 'populate_stats_process_rooms' again #8243

Merged
merged 5 commits into from Sep 8, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/8243.misc
@@ -0,0 +1 @@
Remove the 'populate_stats_process_rooms_2' background job and restore functionality to 'populate_stats_process_rooms'.
@@ -0,0 +1,22 @@
/* Copyright 2020 The Matrix.org Foundation C.I.C.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* 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.
*/
-- This delta file fixes a regression introduced by 58/12room_stats.sql, removing the hacky
-- populate_stats_process_rooms_2 background job and restores the functionality under the
-- original name.
-- See https://github.com/matrix-org/synapse/issues/8238 for details

DELETE FROM background_updates WHERE update_name = 'populate_stats_process_rooms';
UPDATE background_updates SET update_name = 'populate_stats_process_rooms'
WHERE update_name = 'populate_stats_process_rooms_2';
36 changes: 6 additions & 30 deletions synapse/storage/databases/main/stats.py
Expand Up @@ -73,9 +73,6 @@ def __init__(self, database: DatabasePool, db_conn, hs):
self.db_pool.updates.register_background_update_handler(
"populate_stats_process_rooms", self._populate_stats_process_rooms
)
self.db_pool.updates.register_background_update_handler(
"populate_stats_process_rooms_2", self._populate_stats_process_rooms_2
)
self.db_pool.updates.register_background_update_handler(
"populate_stats_process_users", self._populate_stats_process_users
)
Expand Down Expand Up @@ -148,31 +145,10 @@ def _get_next_batch(txn):
return len(users_to_work_on)

async def _populate_stats_process_rooms(self, progress, batch_size):
"""
This was a background update which regenerated statistics for rooms.

It has been replaced by StatsStore._populate_stats_process_rooms_2. This background
job has been scheduled to run as part of Synapse v1.0.0, and again now. To ensure
someone upgrading from <v1.0.0, this background task has been turned into a no-op
so that the potentially expensive task is not run twice.

Further context: https://github.com/matrix-org/synapse/pull/7977
"""
await self.db_pool.updates._end_background_update(
"populate_stats_process_rooms"
)
return 1

async def _populate_stats_process_rooms_2(self, progress, batch_size):
"""
This is a background update which regenerates statistics for rooms.

It replaces StatsStore._populate_stats_process_rooms. See its docstring for the
reasoning.
"""
"""This is a background update which regenerates statistics for rooms."""
if not self.stats_enabled:
await self.db_pool.updates._end_background_update(
"populate_stats_process_rooms_2"
"populate_stats_process_rooms"
)
return 1

Expand All @@ -189,13 +165,13 @@ def _get_next_batch(txn):
return [r for r, in txn]

rooms_to_work_on = await self.db_pool.runInteraction(
"populate_stats_rooms_2_get_batch", _get_next_batch
"populate_stats_rooms_get_batch", _get_next_batch
)

# No more rooms -- complete the transaction.
if not rooms_to_work_on:
await self.db_pool.updates._end_background_update(
"populate_stats_process_rooms_2"
"populate_stats_process_rooms"
)
return 1

Expand All @@ -204,9 +180,9 @@ def _get_next_batch(txn):
progress["last_room_id"] = room_id

await self.db_pool.runInteraction(
"_populate_stats_process_rooms_2",
"_populate_stats_process_rooms",
self.db_pool.updates._background_update_progress_txn,
"populate_stats_process_rooms_2",
"populate_stats_process_rooms",
progress,
)

Expand Down
15 changes: 6 additions & 9 deletions tests/handlers/test_stats.py
Expand Up @@ -54,7 +54,7 @@ def _add_background_updates(self):
self.store.db_pool.simple_insert(
"background_updates",
{
"update_name": "populate_stats_process_rooms_2",
"update_name": "populate_stats_process_rooms",
"progress_json": "{}",
"depends_on": "populate_stats_prepare",
},
Expand All @@ -66,7 +66,7 @@ def _add_background_updates(self):
{
"update_name": "populate_stats_process_users",
"progress_json": "{}",
"depends_on": "populate_stats_process_rooms_2",
"depends_on": "populate_stats_process_rooms",
},
)
)
Expand Down Expand Up @@ -219,10 +219,7 @@ def test_initial_earliest_token(self):
self.get_success(
self.store.db_pool.simple_insert(
"background_updates",
{
"update_name": "populate_stats_process_rooms_2",
"progress_json": "{}",
},
{"update_name": "populate_stats_process_rooms", "progress_json": "{}"},
)
)
self.get_success(
Expand All @@ -231,7 +228,7 @@ def test_initial_earliest_token(self):
{
"update_name": "populate_stats_cleanup",
"progress_json": "{}",
"depends_on": "populate_stats_process_rooms_2",
"depends_on": "populate_stats_process_rooms",
},
)
)
Expand Down Expand Up @@ -728,7 +725,7 @@ def test_incomplete_stats(self):
self.store.db_pool.simple_insert(
"background_updates",
{
"update_name": "populate_stats_process_rooms_2",
"update_name": "populate_stats_process_rooms",
"progress_json": "{}",
"depends_on": "populate_stats_prepare",
},
Expand All @@ -740,7 +737,7 @@ def test_incomplete_stats(self):
{
"update_name": "populate_stats_process_users",
"progress_json": "{}",
"depends_on": "populate_stats_process_rooms_2",
"depends_on": "populate_stats_process_rooms",
},
)
)
Expand Down