From 3686629a2851f4436df3a8ec5c35933ca51f249a Mon Sep 17 00:00:00 2001 From: "Michael N. Lipp" Date: Tue, 18 Mar 2025 16:44:15 +0100 Subject: [PATCH] Fix race condition. --- .../jdrupes/vmoperator/runner/qemu/StatusUpdater.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/org.jdrupes.vmoperator.runner.qemu/src/org/jdrupes/vmoperator/runner/qemu/StatusUpdater.java b/org.jdrupes.vmoperator.runner.qemu/src/org/jdrupes/vmoperator/runner/qemu/StatusUpdater.java index 17f1915..8eaeea8 100644 --- a/org.jdrupes.vmoperator.runner.qemu/src/org/jdrupes/vmoperator/runner/qemu/StatusUpdater.java +++ b/org.jdrupes.vmoperator.runner.qemu/src/org/jdrupes/vmoperator/runner/qemu/StatusUpdater.java @@ -313,7 +313,7 @@ public class StatusUpdater extends VmDefUpdater { } lastRamChange = now; lastRamValue = event.size(); - updateRam(lastRamValue); + updateRam(); return; } @@ -323,10 +323,11 @@ public class StatusUpdater extends VmDefUpdater { if (balloonTimer != null) { return; } + final var pipeline = activeEventPipeline(); balloonTimer = Components.schedule(t -> { - activeEventPipeline().submit("Update RAM size", () -> { + pipeline.submit("Update RAM size", () -> { try { - updateRam(lastRamValue); + updateRam(); } catch (ApiException e) { logger.log(Level.WARNING, e, () -> "Failed to update ram size: " + e.getMessage()); @@ -336,11 +337,11 @@ public class StatusUpdater extends VmDefUpdater { }, now.plusSeconds(15)); } - private void updateRam(BigInteger size) throws ApiException { + private void updateRam() throws ApiException { vmStub.updateStatus(from -> { JsonObject status = from.statusJson(); status.addProperty(Status.RAM, - new Quantity(new BigDecimal(size), Format.BINARY_SI) + new Quantity(new BigDecimal(lastRamValue), Format.BINARY_SI) .toSuffixedString()); return status; });