From 2ff4027aa4ac06d6cc40f25000de750bce5e2fc9 Mon Sep 17 00:00:00 2001 From: chasegawa Date: Mon, 7 Oct 2024 13:20:15 -0700 Subject: [PATCH] NOJIRA - handling migration error on clean db --- .../MigrationTasksContextLoadedListener.java | 40 ++++++++++++------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/MigrationTasksContextLoadedListener.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/MigrationTasksContextLoadedListener.java index 3f4abaeb7..c932746f5 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/MigrationTasksContextLoadedListener.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/MigrationTasksContextLoadedListener.java @@ -9,6 +9,8 @@ import edu.internet2.tier.shibboleth.admin.ui.security.repository.UserRepository; import edu.internet2.tier.shibboleth.admin.ui.security.service.IGroupService; import edu.internet2.tier.shibboleth.admin.ui.security.service.UserService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; @@ -23,6 +25,7 @@ */ @Component public class MigrationTasksContextLoadedListener implements ApplicationListener { + private static final Logger log = LoggerFactory.getLogger(MigrationTasksContextLoadedListener.class); private static boolean attrBundleMigrated = false; @Autowired @@ -81,20 +84,27 @@ void doshibui_1740_migration() { @Transactional void doAttributeBundleMigration() { - attributeBundleRepository.migrateData(); - attributeBundleRepository.findAll().forEach(attrBundleEntry -> { - try { - Set names = new HashSet(); - attrBundleEntry.getAttributeNames().forEach(value -> { - names.add(BundleableAttributeType.values()[Integer.parseInt(value)].label()); - }); - attrBundleEntry.setAttributeNames(names); - attributeBundleRepository.save(attrBundleEntry); - } - catch (NumberFormatException ignore) { - } - }); - attrBundleMigrated = true; - attributeBundleRepository.clearMigratedValues(); + try { + attributeBundleRepository.migrateData(); + attributeBundleRepository.findAll().forEach(attrBundleEntry -> { + try { + Set names = new HashSet(); + attrBundleEntry.getAttributeNames().forEach(value -> { + names.add(BundleableAttributeType.values()[Integer.parseInt(value)].label()); + }); + attrBundleEntry.setAttributeNames(names); + attributeBundleRepository.save(attrBundleEntry); + } + catch (NumberFormatException ignore) { + } + }); + attrBundleMigrated = true; + attributeBundleRepository.clearMigratedValues(); + } + catch (Throwable e){ + // can happen if the db is new, skip trying to do this + log.error("You may safely ignore: *** ERROR: relation \"attribute_bundle_definition_attributes\" does not exist ***"); + attrBundleMigrated = true; + } } } \ No newline at end of file