From 135af39876e0ce5a49dafc2f29de646ddb4f80f6 Mon Sep 17 00:00:00 2001 From: Felix Wu <felix.wu@aiven.io> Date: Thu, 31 Mar 2022 17:30:28 -0700 Subject: [PATCH] catch setting role exception and output a warning instead of stop migration process --- aiven_db_migrate/migrate/pgmigrate.py | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/aiven_db_migrate/migrate/pgmigrate.py b/aiven_db_migrate/migrate/pgmigrate.py index 4984b10..f4f0510 100644 --- a/aiven_db_migrate/migrate/pgmigrate.py +++ b/aiven_db_migrate/migrate/pgmigrate.py @@ -992,18 +992,20 @@ def _migrate_roles(self) -> Dict[str, PGRoleTask]: message=err.diag.message_primary, ) else: - if role.rolconfig: - for conf in role.rolconfig: - key, value = conf.split("=", 1) - self.log.info("Setting config for role %r: %s = %s", role.rolname, key, value) - self.target.c(f'ALTER ROLE {role.safe_rolname} SET "{key}" = %s', args=(value, ), return_rows=0) - roles[role.rolname] = PGRoleTask( - rolname=rolname, - rolpassword=role.rolpassword, - status=PGRoleStatus.created, - message="role created", - ) - + try: + if role.rolconfig: + for conf in role.rolconfig: + key, value = conf.split("=", 1) + self.log.info("Setting config for role %r: %s = %s", role.rolname, key, value) + self.target.c(f'ALTER ROLE {role.safe_rolname} SET "{key}" = %s', args=(value, ), return_rows=0) + roles[role.rolname] = PGRoleTask( + rolname=rolname, + rolpassword=role.rolpassword, + status=PGRoleStatus.created, + message="role created", + ) + except psycopg2.ProgrammingError as err: + self.log.warn(f'Setting config {role.rolname}: {key} = {value}. Error: {err}') return roles @staticmethod