fix: wait for Proxmox resize task before VM start (v1.2.0)

- configure_vm: capture resize UPID and call wait_for_task(120s)
  before returning; prevents lock conflict when VM is started right
  after disk resize
- resize_vm_disk / resize_container_disk (x2): same fix applied
- remove unnecessary restart_vm() after manual QEMU disk resize —
  resize is a storage-layer operation and does not require a reboot;
  the auto-restart was causing a second lock conflict

Fixes: can't lock file '/var/lock/qemu-server/lock-xxx.conf' - got timeout
Fixes: command '/usr/bin/qemu-img resize' failed: got timeout
This commit is contained in:
markmorado
2026-03-16 20:23:06 +01:00
parent bd1777f67b
commit 4ef79112be
15 changed files with 342 additions and 156 deletions

View File

@@ -972,6 +972,19 @@ class MonitoringWorker:
finally:
db.close()
def cleanup_server_state(self, server_id: int):
"""Remove all in-memory state for a deleted server to prevent stale data"""
self.last_server_states.pop(server_id, None)
self.last_server_alerts.pop(server_id, None)
# Remove all VM state entries belonging to this server
stale_keys = [k for k in self.last_vm_states if k.startswith(f"{server_id}:")]
for key in stale_keys:
del self.last_vm_states[key]
stale_alert_keys = [k for k in self.last_resource_alerts if k.startswith(f"{server_id}:")]
for key in stale_alert_keys:
del self.last_resource_alerts[key]
logger.info(f"[MONITORING] Cleared in-memory state for deleted server {server_id}")
# Global worker instance
monitoring_worker = MonitoringWorker()