From 887589d57b658da26c37e108c544d16b9a40dbb7 Mon Sep 17 00:00:00 2001 From: LMBishop <13875753+LMBishop@users.noreply.github.com> Date: Fri, 6 May 2022 20:13:32 +0100 Subject: Fix migrationInProgress boolean not resetting after error --- .../bukkit/command/AdminMigrateCommandHandler.java | 55 ++++++++++++---------- 1 file changed, 29 insertions(+), 26 deletions(-) (limited to 'bukkit/src/main/java') diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminMigrateCommandHandler.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminMigrateCommandHandler.java index b972202f..88e39d32 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminMigrateCommandHandler.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminMigrateCommandHandler.java @@ -82,19 +82,8 @@ public class AdminMigrateCommandHandler implements CommandHandler { sender.sendMessage(ChatColor.GRAY + "Performing migration..."); migrationInProgress.set(true); plugin.getScheduler().doAsync(() -> { - try { - sender.sendMessage(ChatColor.GRAY + "Initialising storage provider '" + fromProvider.getName() + "'..."); - fromProvider.init(); - } catch (Exception e) { - sender.sendMessage(ChatColor.RED + "An error occurred while initializing '" + fromProvider.getName() + "' storage provider."); - return; - } - - try { - sender.sendMessage(ChatColor.GRAY + "Initialising storage provider '" + toProvider.getName() + "'..."); - toProvider.init(); - } catch (Exception e) { - sender.sendMessage(ChatColor.RED + "An error occurred while initializing '" + toProvider.getName() + "' storage provider."); + if (!initProvider(sender, fromProvider) || !initProvider(sender, toProvider)) { + sender.sendMessage(ChatColor.DARK_RED + "Migration aborted."); return; } @@ -110,19 +99,8 @@ public class AdminMigrateCommandHandler implements CommandHandler { toProvider.saveAllProgressFiles(files); sender.sendMessage(ChatColor.GRAY + "Done."); - try { - sender.sendMessage(ChatColor.GRAY + "Shutting down storage provider '" + fromProvider.getName() + "'..."); - fromProvider.shutdown(); - } catch (Exception e) { - sender.sendMessage(ChatColor.RED + "An error occurred while shutting down '" + fromProvider.getName() + "' storage provider."); - } - - try { - sender.sendMessage(ChatColor.GRAY + "Shutting down storage provider '" + toProvider.getName() + "'..."); - toProvider.shutdown(); - } catch (Exception e) { - sender.sendMessage(ChatColor.RED + "An error occurred while shutting down '" + toProvider.getName() + "' storage provider."); - } + shutdownProvider(sender, fromProvider); + shutdownProvider(sender, toProvider); long endTime = System.currentTimeMillis(); sender.sendMessage(ChatColor.GREEN + "Migration complete. Took " + String.format("%.3f", (endTime - startTime) / 1000f) + "s."); @@ -143,6 +121,31 @@ public class AdminMigrateCommandHandler implements CommandHandler { sender.sendMessage(ChatColor.GRAY + "Please see this file, or the wiki, for further instructions."); } + private void shutdownProvider(CommandSender sender, StorageProvider provider) { + try { + sender.sendMessage(ChatColor.GRAY + "Shutting down storage provider '" + provider.getName() + "'..."); + provider.shutdown(); + } catch (Exception e) { + sender.sendMessage(ChatColor.RED + "An error occurred while shutting down '" + provider.getName() + "' storage provider. " + + "See server console for more details."); + e.printStackTrace(); + } + } + + private boolean initProvider(CommandSender sender, StorageProvider provider) { + try { + sender.sendMessage(ChatColor.GRAY + "Initialising storage provider '" + provider.getName() + "'..."); + provider.init(); + return true; + } catch (Exception e) { + migrationInProgress.set(false); + sender.sendMessage(ChatColor.RED + "An error occurred while initializing '" + provider.getName() + "' storage provider. " + + "See server console for more details."); + e.printStackTrace(); + return false; + } + } + private StorageProvider getStorageProvider(ConfigurationSection configurationSection) { String configuredProvider = configurationSection.getString("provider", "yaml"); StorageProvider storageProvider; -- cgit v1.2.3-70-g09d2