From e9c94eb83b4baa2d2d86145207a33aabc9cef947 Mon Sep 17 00:00:00 2001 From: catbref Date: Thu, 28 Nov 2019 14:30:42 +0000 Subject: [PATCH] Fix args not being propagated by AutoUpdate to ApplyUpdate. Also propagate ALL command-line args, not just args[0] --- src/main/java/org/qora/ApplyUpdate.java | 5 ++--- .../java/org/qora/controller/AutoUpdate.java | 8 +++---- .../java/org/qora/controller/Controller.java | 21 ++++++++++++------- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/qora/ApplyUpdate.java b/src/main/java/org/qora/ApplyUpdate.java index af163eca..00ff022a 100644 --- a/src/main/java/org/qora/ApplyUpdate.java +++ b/src/main/java/org/qora/ApplyUpdate.java @@ -151,9 +151,8 @@ public class ApplyUpdate { // Call mainClass in JAR javaCmd.addAll(Arrays.asList("-jar", JAR_FILENAME)); - if (args.length > 0) - // Add settings filename - javaCmd.add(args[0]); + // Add saved command-line args + javaCmd.addAll(Arrays.asList(args)); } try { diff --git a/src/main/java/org/qora/controller/AutoUpdate.java b/src/main/java/org/qora/controller/AutoUpdate.java index cdcad90c..92b337d9 100644 --- a/src/main/java/org/qora/controller/AutoUpdate.java +++ b/src/main/java/org/qora/controller/AutoUpdate.java @@ -236,10 +236,10 @@ public class AutoUpdate extends Thread { // Call ApplyUpdate using new JAR javaCmd.addAll(Arrays.asList("-cp", NEW_JAR_FILENAME, ApplyUpdate.class.getCanonicalName())); - // Are we running with different settings? - String settingsFilename = Controller.getInstance().getSettingsFilename(); - if (settingsFilename != null) - javaCmd.add(settingsFilename); + // Add command-line args saved from start-up + String[] savedArgs = Controller.getInstance().getSavedArgs(); + if (savedArgs != null) + javaCmd.addAll(Arrays.asList(savedArgs)); LOGGER.info(String.format("Applying update with: %s", String.join(" ", javaCmd))); diff --git a/src/main/java/org/qora/controller/Controller.java b/src/main/java/org/qora/controller/Controller.java index d414a1be..46b19f73 100644 --- a/src/main/java/org/qora/controller/Controller.java +++ b/src/main/java/org/qora/controller/Controller.java @@ -121,7 +121,7 @@ public class Controller extends Thread { private final String buildVersion; private final long buildTimestamp; // seconds - private String settingsFilename; + private final String[] savedArgs; private AtomicReference chainTip = new AtomicReference<>(); @@ -163,7 +163,7 @@ public class Controller extends Thread { // Constructors - private Controller() { + private Controller(String[] args) { Properties properties = new Properties(); try (InputStream in = this.getClass().getResourceAsStream("/build.properties")) { properties.load(in); @@ -184,11 +184,18 @@ public class Controller extends Thread { this.buildVersion = VERSION_PREFIX + buildVersionProperty; LOGGER.info(String.format("Build version: %s", this.buildVersion)); + + this.savedArgs = args; + } + + private static Controller newInstance(String[] args) { + instance = new Controller(args); + return instance; } - public static Controller getInstance() { + public static synchronized Controller getInstance() { if (instance == null) - instance = new Controller(); + instance = new Controller(null); return instance; } @@ -230,8 +237,8 @@ public class Controller extends Thread { return this.blockchainLock; } - /* package */ String getSettingsFilename() { - return this.settingsFilename; + /* package */ String[] getSavedArgs() { + return this.savedArgs; } // Entry point @@ -294,7 +301,7 @@ public class Controller extends Thread { } LOGGER.info("Starting controller"); - Controller.getInstance().start(); + Controller.newInstance(args).start(); LOGGER.info(String.format("Starting networking on port %d", Settings.getInstance().getListenPort())); try {