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

Commit

Permalink
Reinstate event_search_postgres_gist handler
Browse files Browse the repository at this point in the history
People may have queued updates for this, so we can't just delete it.
  • Loading branch information
richvdh committed Feb 2, 2018
1 parent a66f489 commit 6b02fc8
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 6 deletions.
19 changes: 19 additions & 0 deletions synapse/storage/background_updates.py
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,25 @@ def register_background_update_handler(self, update_name, update_handler):
"""
self._background_update_handlers[update_name] = update_handler

def register_noop_background_update(self, update_name):
"""Register a noop handler for a background update.
This is useful when we previously did a background update, but no
longer wish to do the update. In this case the background update should
be removed from the schema delta files, but there may still be some
users who have the background update queued, so this method should
also be called to clear the update.
Args:
update_name (str): Name of update
"""
@defer.inlineCallbacks
def noop_update(progress, batch_size):
yield self._end_background_update(update_name)
defer.returnValue(1)

self.register_background_update_handler(update_name, noop_update)

def register_background_index_update(self, update_name, index_name,
table, columns, where_clause=None,
unique=False,
Expand Down
7 changes: 1 addition & 6 deletions synapse/storage/registration.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,7 @@ def __init__(self, db_conn, hs):
# we no longer use refresh tokens, but it's possible that some people
# might have a background update queued to build this index. Just
# clear the background update.
@defer.inlineCallbacks
def noop_update(progress, batch_size):
yield self._end_background_update("refresh_tokens_device_index")
defer.returnValue(1)
self.register_background_update_handler(
"refresh_tokens_device_index", noop_update)
self.register_noop_background_update("refresh_tokens_device_index")

@defer.inlineCallbacks
def add_access_token_to_user(self, user_id, token, device_id=None):
Expand Down
11 changes: 11 additions & 0 deletions synapse/storage/search.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ class SearchStore(BackgroundUpdateStore):

EVENT_SEARCH_UPDATE_NAME = "event_search"
EVENT_SEARCH_ORDER_UPDATE_NAME = "event_search_order"
EVENT_SEARCH_USE_GIST_POSTGRES_NAME = "event_search_postgres_gist"
EVENT_SEARCH_USE_GIN_POSTGRES_NAME = "event_search_postgres_gin"

def __init__(self, db_conn, hs):
Expand All @@ -42,6 +43,16 @@ def __init__(self, db_conn, hs):
self.EVENT_SEARCH_ORDER_UPDATE_NAME,
self._background_reindex_search_order
)

# we used to have a background update to turn the GIN index into a
# GIST one; we no longer do that (obviously) because we actually want
# a GIN index. However, it's possible that some people might still have
# the background update queued, so we register a handler to clear the
# background update.
self.register_noop_background_update(
self.EVENT_SEARCH_USE_GIST_POSTGRES_NAME,
)

self.register_background_update_handler(
self.EVENT_SEARCH_USE_GIN_POSTGRES_NAME,
self._background_reindex_gin_search
Expand Down

0 comments on commit 6b02fc8

Please sign in to comment.