|
22 | 22 | BG_UPDATE_REMOVE_MEDIA_REPO_INDEX_WITHOUT_METHOD = (
|
23 | 23 | "media_repository_drop_index_wo_method"
|
24 | 24 | )
|
| 25 | +BG_UPDATE_REMOVE_MEDIA_REPO_INDEX_WITHOUT_METHOD_2 = ( |
| 26 | + "media_repository_drop_index_wo_method_2" |
| 27 | +) |
25 | 28 |
|
26 | 29 |
|
27 | 30 | class MediaSortOrder(Enum):
|
@@ -85,23 +88,35 @@ def __init__(self, database: DatabasePool, db_conn, hs):
|
85 | 88 | unique=True,
|
86 | 89 | )
|
87 | 90 |
|
| 91 | + # the original impl of _drop_media_index_without_method was broken (see |
| 92 | + # https://github.com/matrix-org/synapse/issues/8649), so we replace the original |
| 93 | + # impl with a no-op and run the fixed migration as |
| 94 | + # media_repository_drop_index_wo_method_2. |
| 95 | + self.db_pool.updates.register_noop_background_update( |
| 96 | + BG_UPDATE_REMOVE_MEDIA_REPO_INDEX_WITHOUT_METHOD |
| 97 | + ) |
88 | 98 | self.db_pool.updates.register_background_update_handler(
|
89 |
| - BG_UPDATE_REMOVE_MEDIA_REPO_INDEX_WITHOUT_METHOD, |
| 99 | + BG_UPDATE_REMOVE_MEDIA_REPO_INDEX_WITHOUT_METHOD_2, |
90 | 100 | self._drop_media_index_without_method,
|
91 | 101 | )
|
92 | 102 |
|
93 | 103 | async def _drop_media_index_without_method(self, progress, batch_size):
|
| 104 | + """background update handler which removes the old constraints. |
| 105 | +
|
| 106 | + Note that this is only run on postgres. |
| 107 | + """ |
| 108 | + |
94 | 109 | def f(txn):
|
95 | 110 | txn.execute(
|
96 | 111 | "ALTER TABLE local_media_repository_thumbnails DROP CONSTRAINT IF EXISTS local_media_repository_thumbn_media_id_thumbnail_width_thum_key"
|
97 | 112 | )
|
98 | 113 | txn.execute(
|
99 |
| - "ALTER TABLE remote_media_cache_thumbnails DROP CONSTRAINT IF EXISTS remote_media_repository_thumbn_media_id_thumbnail_width_thum_key" |
| 114 | + "ALTER TABLE remote_media_cache_thumbnails DROP CONSTRAINT IF EXISTS remote_media_cache_thumbnails_media_origin_media_id_thumbna_key" |
100 | 115 | )
|
101 | 116 |
|
102 | 117 | await self.db_pool.runInteraction("drop_media_indices_without_method", f)
|
103 | 118 | await self.db_pool.updates._end_background_update(
|
104 |
| - BG_UPDATE_REMOVE_MEDIA_REPO_INDEX_WITHOUT_METHOD |
| 119 | + BG_UPDATE_REMOVE_MEDIA_REPO_INDEX_WITHOUT_METHOD_2 |
105 | 120 | )
|
106 | 121 | return 1
|
107 | 122 |
|
|
0 commit comments