From f55d67d98dddf5861dc4266564863dde4b0b6ed1 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Fri, 27 Mar 2026 13:05:59 +0200 Subject: sr: retune Raft replay for faster reelection --- src/main/java/testing/HeadlessLoader.java | 49 ++++++++++++++++++---- .../java/testing/HeadlessSimulationRunner.java | 6 ++- 2 files changed, 46 insertions(+), 9 deletions(-) (limited to 'src/main/java/testing') diff --git a/src/main/java/testing/HeadlessLoader.java b/src/main/java/testing/HeadlessLoader.java index a19ec19..de18a93 100644 --- a/src/main/java/testing/HeadlessLoader.java +++ b/src/main/java/testing/HeadlessLoader.java @@ -47,32 +47,32 @@ public class HeadlessLoader { // Copy non-string values from serialized prefs for (String key : serializedPrefs.getIntegerKeySet()) { if (!key.startsWith("lang.")) { - newPrefs.initInteger(key, serializedPrefs.getInteger(key)); + newPrefs.setInteger(key, serializedPrefs.getInteger(key)); } } for (String key : serializedPrefs.getBooleanKeySet()) { if (!key.startsWith("lang.")) { - newPrefs.initBoolean(key, serializedPrefs.getBoolean(key)); + newPrefs.setBoolean(key, serializedPrefs.getBoolean(key)); } } for (String key : serializedPrefs.getFloatKeySet()) { if (!key.startsWith("lang.")) { - newPrefs.initFloat(key, serializedPrefs.getFloat(key)); + newPrefs.setFloat(key, serializedPrefs.getFloat(key)); } } for (String key : serializedPrefs.getColorKeySet()) { if (!key.startsWith("lang.")) { - newPrefs.initColor(key, serializedPrefs.getColor(key)); + newPrefs.setColor(key, serializedPrefs.getColor(key)); } } for (String key : serializedPrefs.getVectorKeySet()) { if (!key.startsWith("lang.")) { - newPrefs.initVector(key, serializedPrefs.getVector(key)); + newPrefs.setVector(key, serializedPrefs.getVector(key)); } } for (String key : serializedPrefs.getLongKeySet()) { if (!key.startsWith("lang.")) { - newPrefs.initLong(key, serializedPrefs.getLong(key)); + newPrefs.setLong(key, serializedPrefs.getLong(key)); } } @@ -86,6 +86,41 @@ public class HeadlessLoader { // Deserialize simulator simulator.deserialize(serializer, objectInputStream); objectInputStream.close(); + + // Reapply non-localized prefs after deserialization in case the + // simulator reset any persisted numeric values while restoring state. + VSPrefs simulatorPrefs = simulator.getPrefs(); + for (String key : serializedPrefs.getIntegerKeySet()) { + if (!key.startsWith("lang.")) { + simulatorPrefs.setInteger(key, serializedPrefs.getInteger(key)); + } + } + for (String key : serializedPrefs.getBooleanKeySet()) { + if (!key.startsWith("lang.")) { + simulatorPrefs.setBoolean(key, serializedPrefs.getBoolean(key)); + } + } + for (String key : serializedPrefs.getFloatKeySet()) { + if (!key.startsWith("lang.")) { + simulatorPrefs.setFloat(key, serializedPrefs.getFloat(key)); + } + } + for (String key : serializedPrefs.getColorKeySet()) { + if (!key.startsWith("lang.")) { + simulatorPrefs.setColor(key, serializedPrefs.getColor(key)); + } + } + for (String key : serializedPrefs.getVectorKeySet()) { + if (!key.startsWith("lang.")) { + simulatorPrefs.setVector(key, serializedPrefs.getVector(key)); + } + } + for (String key : serializedPrefs.getLongKeySet()) { + if (!key.startsWith("lang.")) { + simulatorPrefs.setLong(key, serializedPrefs.getLong(key)); + } + } + simulator.updateFromPrefs(); // Get the visualization using reflection Field vizField = VSSimulator.class.getDeclaredField("simulatorVisualization"); @@ -140,4 +175,4 @@ public class HeadlessLoader { return visualization; } } -} \ No newline at end of file +} diff --git a/src/main/java/testing/HeadlessSimulationRunner.java b/src/main/java/testing/HeadlessSimulationRunner.java index 6279fa9..5a49487 100644 --- a/src/main/java/testing/HeadlessSimulationRunner.java +++ b/src/main/java/testing/HeadlessSimulationRunner.java @@ -86,7 +86,9 @@ public class HeadlessSimulationRunner { // Get the simulation's configured end time long untilTime = viz.getUntilTime(); - long actualMaxTime = Math.min(maxTime, untilTime); + long prefsUntilTime = simulator.getPrefs().getInteger("sim.seconds") * 1000L; + long actualUntilTime = Math.max(untilTime, prefsUntilTime); + long actualMaxTime = Math.min(maxTime, actualUntilTime); System.out.println("Running simulation for up to " + actualMaxTime + "ms (until time: " + untilTime + "ms)..."); @@ -347,4 +349,4 @@ public class HeadlessSimulationRunner { } } } -} \ No newline at end of file +} -- cgit v1.2.3