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

Commit

Permalink
GIN reindex: Fix syntax errors, improve exception handling
Browse files Browse the repository at this point in the history
  • Loading branch information
richvdh committed Feb 3, 2018
1 parent 6b02fc8 commit 2eff566
Showing 1 changed file with 28 additions and 14 deletions.
42 changes: 28 additions & 14 deletions synapse/storage/search.py
Original file line number Diff line number Diff line change
Expand Up @@ -157,28 +157,42 @@ def reindex_search_txn(txn):

@defer.inlineCallbacks
def _background_reindex_gin_search(self, progress, batch_size):
'''This handles old synapses which used GIST indexes, if any;
"""This handles old synapses which used GIST indexes, if any;
converting them back to be GIN as per the actual schema.
'''
"""

def create_index(conn):
conn.rollback()

# we have to set autocommit, because postgres refuses to
# CREATE INDEX CONCURRENTLY without it.
conn.set_session(autocommit=True)

try:
conn.rollback()
conn.set_session(autocommit=True)
c = conn.cursor()

# if we skipped the conversion to GIST, we may already/still
# have an event_search_fts_idx; unfortunately postgres 9.4
# doesn't support CREATE INDEX IF EXISTS so we just catch the
# exception and ignore it.
import psycopg2
try:
c.execute(
"CREATE INDEX CONCURRENTLY event_search_fts_idx"
" ON event_search USING GIN (vector)"
)
except psycopg2.ProgrammingError as e:
logger.warn(
"Ignoring error %r when trying to switch from GIST to GIN",
e
)

# we should now be able to delete the GIST index.
c.execute(
"CREATE INDEX CONCURRENTLY event_search_fts_idx"
" ON event_search USING GIN (vector)"
)

c.execute("DROP INDEX event_search_fts_idx_gist")

conn.set_session(autocommit=False)
except e:
logger.warn(
"Ignoring error %s when trying to switch from GIST to GIN" % (e,)
"DROP INDEX IF EXISTS event_search_fts_idx_gist"
)
finally:
conn.set_session(autocommit=True)

if isinstance(self.database_engine, PostgresEngine):
yield self.runWithConnection(create_index)
Expand Down

0 comments on commit 2eff566

Please sign in to comment.