Suppress unwanted error messages during recorder migration (#66004)

This commit is contained in:
Erik Montnemery 2022-02-08 00:46:40 +01:00 committed by Paulus Schoutsen
parent ac63a7e01e
commit 7195372616

View File

@ -101,15 +101,15 @@ def _create_index(instance, table_name, index_name):
"be patient!", "be patient!",
index_name, index_name,
) )
try: with session_scope(session=instance.get_session()) as session:
with session_scope(session=instance.get_session()) as session: try:
connection = session.connection() connection = session.connection()
index.create(connection) index.create(connection)
except (InternalError, OperationalError, ProgrammingError) as err: except (InternalError, OperationalError, ProgrammingError) as err:
raise_if_exception_missing_str(err, ["already exists", "duplicate"]) raise_if_exception_missing_str(err, ["already exists", "duplicate"])
_LOGGER.warning( _LOGGER.warning(
"Index %s already exists on %s, continuing", index_name, table_name "Index %s already exists on %s, continuing", index_name, table_name
) )
_LOGGER.debug("Finished creating %s", index_name) _LOGGER.debug("Finished creating %s", index_name)
@ -129,19 +129,19 @@ def _drop_index(instance, table_name, index_name):
success = False success = False
# Engines like DB2/Oracle # Engines like DB2/Oracle
try: with session_scope(session=instance.get_session()) as session:
with session_scope(session=instance.get_session()) as session: try:
connection = session.connection() connection = session.connection()
connection.execute(text(f"DROP INDEX {index_name}")) connection.execute(text(f"DROP INDEX {index_name}"))
except SQLAlchemyError: except SQLAlchemyError:
pass pass
else: else:
success = True success = True
# Engines like SQLite, SQL Server # Engines like SQLite, SQL Server
if not success: if not success:
try: with session_scope(session=instance.get_session()) as session:
with session_scope(session=instance.get_session()) as session: try:
connection = session.connection() connection = session.connection()
connection.execute( connection.execute(
text( text(
@ -150,15 +150,15 @@ def _drop_index(instance, table_name, index_name):
) )
) )
) )
except SQLAlchemyError: except SQLAlchemyError:
pass pass
else: else:
success = True success = True
if not success: if not success:
# Engines like MySQL, MS Access # Engines like MySQL, MS Access
try: with session_scope(session=instance.get_session()) as session:
with session_scope(session=instance.get_session()) as session: try:
connection = session.connection() connection = session.connection()
connection.execute( connection.execute(
text( text(
@ -167,10 +167,10 @@ def _drop_index(instance, table_name, index_name):
) )
) )
) )
except SQLAlchemyError: except SQLAlchemyError:
pass pass
else: else:
success = True success = True
if success: if success:
_LOGGER.debug( _LOGGER.debug(
@ -203,8 +203,8 @@ def _add_columns(instance, table_name, columns_def):
columns_def = [f"ADD {col_def}" for col_def in columns_def] columns_def = [f"ADD {col_def}" for col_def in columns_def]
try: with session_scope(session=instance.get_session()) as session:
with session_scope(session=instance.get_session()) as session: try:
connection = session.connection() connection = session.connection()
connection.execute( connection.execute(
text( text(
@ -214,14 +214,14 @@ def _add_columns(instance, table_name, columns_def):
) )
) )
return return
except (InternalError, OperationalError, ProgrammingError): except (InternalError, OperationalError, ProgrammingError):
# Some engines support adding all columns at once, # Some engines support adding all columns at once,
# this error is when they don't # this error is when they don't
_LOGGER.info("Unable to use quick column add. Adding 1 by 1") _LOGGER.info("Unable to use quick column add. Adding 1 by 1")
for column_def in columns_def: for column_def in columns_def:
try: with session_scope(session=instance.get_session()) as session:
with session_scope(session=instance.get_session()) as session: try:
connection = session.connection() connection = session.connection()
connection.execute( connection.execute(
text( text(
@ -230,13 +230,13 @@ def _add_columns(instance, table_name, columns_def):
) )
) )
) )
except (InternalError, OperationalError, ProgrammingError) as err: except (InternalError, OperationalError, ProgrammingError) as err:
raise_if_exception_missing_str(err, ["already exists", "duplicate"]) raise_if_exception_missing_str(err, ["already exists", "duplicate"])
_LOGGER.warning( _LOGGER.warning(
"Column %s already exists on %s, continuing", "Column %s already exists on %s, continuing",
column_def.split(" ")[1], column_def.split(" ")[1],
table_name, table_name,
) )
def _modify_columns(instance, engine, table_name, columns_def): def _modify_columns(instance, engine, table_name, columns_def):
@ -271,8 +271,8 @@ def _modify_columns(instance, engine, table_name, columns_def):
else: else:
columns_def = [f"MODIFY {col_def}" for col_def in columns_def] columns_def = [f"MODIFY {col_def}" for col_def in columns_def]
try: with session_scope(session=instance.get_session()) as session:
with session_scope(session=instance.get_session()) as session: try:
connection = session.connection() connection = session.connection()
connection.execute( connection.execute(
text( text(
@ -282,12 +282,12 @@ def _modify_columns(instance, engine, table_name, columns_def):
) )
) )
return return
except (InternalError, OperationalError): except (InternalError, OperationalError):
_LOGGER.info("Unable to use quick column modify. Modifying 1 by 1") _LOGGER.info("Unable to use quick column modify. Modifying 1 by 1")
for column_def in columns_def: for column_def in columns_def:
try: with session_scope(session=instance.get_session()) as session:
with session_scope(session=instance.get_session()) as session: try:
connection = session.connection() connection = session.connection()
connection.execute( connection.execute(
text( text(
@ -296,10 +296,10 @@ def _modify_columns(instance, engine, table_name, columns_def):
) )
) )
) )
except (InternalError, OperationalError): except (InternalError, OperationalError):
_LOGGER.exception( _LOGGER.exception(
"Could not modify column %s in table %s", column_def, table_name "Could not modify column %s in table %s", column_def, table_name
) )
def _update_states_table_with_foreign_key_options(instance, engine): def _update_states_table_with_foreign_key_options(instance, engine):
@ -330,17 +330,17 @@ def _update_states_table_with_foreign_key_options(instance, engine):
) )
for alter in alters: for alter in alters:
try: with session_scope(session=instance.get_session()) as session:
with session_scope(session=instance.get_session()) as session: try:
connection = session.connection() connection = session.connection()
connection.execute(DropConstraint(alter["old_fk"])) connection.execute(DropConstraint(alter["old_fk"]))
for fkc in states_key_constraints: for fkc in states_key_constraints:
if fkc.column_keys == alter["columns"]: if fkc.column_keys == alter["columns"]:
connection.execute(AddConstraint(fkc)) connection.execute(AddConstraint(fkc))
except (InternalError, OperationalError): except (InternalError, OperationalError):
_LOGGER.exception( _LOGGER.exception(
"Could not update foreign options in %s table", TABLE_STATES "Could not update foreign options in %s table", TABLE_STATES
) )
def _drop_foreign_key_constraints(instance, engine, table, columns): def _drop_foreign_key_constraints(instance, engine, table, columns):
@ -361,16 +361,16 @@ def _drop_foreign_key_constraints(instance, engine, table, columns):
) )
for drop in drops: for drop in drops:
try: with session_scope(session=instance.get_session()) as session:
with session_scope(session=instance.get_session()) as session: try:
connection = session.connection() connection = session.connection()
connection.execute(DropConstraint(drop)) connection.execute(DropConstraint(drop))
except (InternalError, OperationalError): except (InternalError, OperationalError):
_LOGGER.exception( _LOGGER.exception(
"Could not drop foreign constraints in %s table on %s", "Could not drop foreign constraints in %s table on %s",
TABLE_STATES, TABLE_STATES,
columns, columns,
) )
def _apply_update(instance, new_version, old_version): # noqa: C901 def _apply_update(instance, new_version, old_version): # noqa: C901