Rename 'populate_stats_process_rooms_2' background job back to 'populate_stats_process_rooms' again (#8243)
Fixes https://github.com/matrix-org/synapse/issues/8238 Alongside the delta file, some changes were also necessary to the codebase to remove references to the now defunct `populate_stats_process_rooms_2` background job. Thankfully the latter doesn't seem to have made it into any documentation yet :)pull/8278/head
							parent
							
								
									8d6f97f932
								
							
						
					
					
						commit
						68cdb3708e
					
				| 
						 | 
				
			
			@ -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';
 | 
			
		||||
| 
						 | 
				
			
			@ -73,9 +73,6 @@ class StatsStore(StateDeltasStore):
 | 
			
		|||
        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
 | 
			
		||||
        )
 | 
			
		||||
| 
						 | 
				
			
			@ -148,31 +145,10 @@ class StatsStore(StateDeltasStore):
 | 
			
		|||
        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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -189,13 +165,13 @@ class StatsStore(StateDeltasStore):
 | 
			
		|||
            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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -204,9 +180,9 @@ class StatsStore(StateDeltasStore):
 | 
			
		|||
            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,
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -54,7 +54,7 @@ class StatsRoomTests(unittest.HomeserverTestCase):
 | 
			
		|||
            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",
 | 
			
		||||
                },
 | 
			
		||||
| 
						 | 
				
			
			@ -66,7 +66,7 @@ class StatsRoomTests(unittest.HomeserverTestCase):
 | 
			
		|||
                {
 | 
			
		||||
                    "update_name": "populate_stats_process_users",
 | 
			
		||||
                    "progress_json": "{}",
 | 
			
		||||
                    "depends_on": "populate_stats_process_rooms_2",
 | 
			
		||||
                    "depends_on": "populate_stats_process_rooms",
 | 
			
		||||
                },
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
| 
						 | 
				
			
			@ -219,10 +219,7 @@ class StatsRoomTests(unittest.HomeserverTestCase):
 | 
			
		|||
        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(
 | 
			
		||||
| 
						 | 
				
			
			@ -231,7 +228,7 @@ class StatsRoomTests(unittest.HomeserverTestCase):
 | 
			
		|||
                {
 | 
			
		||||
                    "update_name": "populate_stats_cleanup",
 | 
			
		||||
                    "progress_json": "{}",
 | 
			
		||||
                    "depends_on": "populate_stats_process_rooms_2",
 | 
			
		||||
                    "depends_on": "populate_stats_process_rooms",
 | 
			
		||||
                },
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
| 
						 | 
				
			
			@ -728,7 +725,7 @@ class StatsRoomTests(unittest.HomeserverTestCase):
 | 
			
		|||
            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",
 | 
			
		||||
                },
 | 
			
		||||
| 
						 | 
				
			
			@ -740,7 +737,7 @@ class StatsRoomTests(unittest.HomeserverTestCase):
 | 
			
		|||
                {
 | 
			
		||||
                    "update_name": "populate_stats_process_users",
 | 
			
		||||
                    "progress_json": "{}",
 | 
			
		||||
                    "depends_on": "populate_stats_process_rooms_2",
 | 
			
		||||
                    "depends_on": "populate_stats_process_rooms",
 | 
			
		||||
                },
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue