From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [IPv6:2a0f:8001:1:32::40]) by lore.proxmox.com (Postfix) with ESMTPS id E58051FF138 for ; Mon, 20 Jul 2026 14:38:27 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id EB586215B8; Mon, 20 Jul 2026 14:37:46 +0200 (CEST) From: Daniel Kral To: pve-devel@lists.proxmox.com Subject: [PATCH ha-manager 13/16] lrm: update the service status once per work iteration Date: Mon, 20 Jul 2026 14:37:02 +0200 Message-ID: <20260720123705.216089-14-d.kral@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260720123705.216089-1-d.kral@proxmox.com> References: <20260720123705.216089-1-d.kral@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1784551006498 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.226 Adjusted score from AWL reputation of From: address DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment (newer systems) RCVD_IN_DNSWL_LOW -0.7 Sender listed at https://www.dnswl.org/, low trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: VAJ7EMPRCYQXEFTEKQKK5OBBMBKB52UE X-Message-ID-Hash: VAJ7EMPRCYQXEFTEKQKK5OBBMBKB52UE X-MailFrom: d.kral@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Each invocation of update_service_status() does read the current manager_status and update several internal LRM state properties. Reduce it to be run only once at the beginning of the work iteration to have consistent state across the whole work iteration. The changes in the test cases reflect the change as test cases with failing pmxcfs read/write do only output one log message as opposed to two log messages when read_manager_status() is called. Signed-off-by: Daniel Kral --- src/PVE/HA/LRM.pm | 6 +++--- src/test/test-cfs-unavailable1/log.expect | 5 ----- src/test/test-group-migrate4/log.expect | 10 ---------- 3 files changed, 3 insertions(+), 18 deletions(-) diff --git a/src/PVE/HA/LRM.pm b/src/PVE/HA/LRM.pm index 920fda52..1a093e8e 100644 --- a/src/PVE/HA/LRM.pm +++ b/src/PVE/HA/LRM.pm @@ -389,7 +389,7 @@ sub work { my $status = $self->get_local_status(); my $state = $status->{state}; - $self->update_lrm_status(); + my $status_update_successful = $self->update_lrm_status(); my $fence_request = $self->is_fence_requested(); @@ -520,7 +520,7 @@ sub work { # if we could not get the current service status there's no point # in doing anything, try again next round. - return if !$self->update_lrm_status(); + return if !$status_update_successful; if ($self->{shutdown_request}) { @@ -619,7 +619,7 @@ sub work { } elsif ($state eq 'maintenance') { my $startime = $haenv->get_time(); - return if !$self->update_lrm_status(); + return if !$status_update_successful; # wait until all active services moved away my $service_count = $self->active_service_count(); diff --git a/src/test/test-cfs-unavailable1/log.expect b/src/test/test-cfs-unavailable1/log.expect index a9bb10f2..4d796c50 100644 --- a/src/test/test-cfs-unavailable1/log.expect +++ b/src/test/test-cfs-unavailable1/log.expect @@ -36,27 +36,22 @@ info 120 cmdlist: execute service vm:101 stopped err 120 node1/crm: could not read manager status: cfs connection refused - not mounted? err 120 node1/crm: got unexpected error - cfs connection refused - not mounted? err 121 node1/lrm: updating service status from manager failed: cfs connection refused - not mounted? -err 121 node1/lrm: updating service status from manager failed: cfs connection refused - not mounted? err 121 node1/lrm: unable to write lrm status file - cfs connection refused - not mounted? err 140 node1/crm: could not read manager status: cfs connection refused - not mounted? err 140 node1/crm: got unexpected error - cfs connection refused - not mounted? err 141 node1/lrm: updating service status from manager failed: cfs connection refused - not mounted? -err 141 node1/lrm: updating service status from manager failed: cfs connection refused - not mounted? err 141 node1/lrm: unable to write lrm status file - cfs connection refused - not mounted? err 160 node1/crm: could not read manager status: cfs connection refused - not mounted? err 160 node1/crm: got unexpected error - cfs connection refused - not mounted? err 161 node1/lrm: updating service status from manager failed: cfs connection refused - not mounted? -err 161 node1/lrm: updating service status from manager failed: cfs connection refused - not mounted? err 161 node1/lrm: unable to write lrm status file - cfs connection refused - not mounted? err 180 node1/crm: could not read manager status: cfs connection refused - not mounted? err 180 node1/crm: got unexpected error - cfs connection refused - not mounted? err 181 node1/lrm: updating service status from manager failed: cfs connection refused - not mounted? -err 181 node1/lrm: updating service status from manager failed: cfs connection refused - not mounted? err 181 node1/lrm: unable to write lrm status file - cfs connection refused - not mounted? err 200 node1/crm: could not read manager status: cfs connection refused - not mounted? err 200 node1/crm: got unexpected error - cfs connection refused - not mounted? err 201 node1/lrm: updating service status from manager failed: cfs connection refused - not mounted? -err 201 node1/lrm: updating service status from manager failed: cfs connection refused - not mounted? err 201 node1/lrm: unable to write lrm status file - cfs connection refused - not mounted? info 220 cmdlist: execute cfs node1 rw work info 220 node1/crm: service 'vm:101': state changed from 'started' to 'request_stop' diff --git a/src/test/test-group-migrate4/log.expect b/src/test/test-group-migrate4/log.expect index 52b79a3c..2bb3b5a5 100644 --- a/src/test/test-group-migrate4/log.expect +++ b/src/test/test-group-migrate4/log.expect @@ -96,53 +96,43 @@ info 420 cmdlist: execute cfs node2 rw fail err 422 node2/crm: could not read manager status: cfs connection refused - not mounted? err 422 node2/crm: got unexpected error - cfs connection refused - not mounted? err 423 node2/lrm: updating service status from manager failed: cfs connection refused - not mounted? -err 423 node2/lrm: updating service status from manager failed: cfs connection refused - not mounted? err 423 node2/lrm: unable to write lrm status file - cfs connection refused - not mounted? err 442 node2/crm: could not read manager status: cfs connection refused - not mounted? err 442 node2/crm: got unexpected error - cfs connection refused - not mounted? err 443 node2/lrm: updating service status from manager failed: cfs connection refused - not mounted? -err 443 node2/lrm: updating service status from manager failed: cfs connection refused - not mounted? err 443 node2/lrm: unable to write lrm status file - cfs connection refused - not mounted? err 462 node2/crm: could not read manager status: cfs connection refused - not mounted? err 462 node2/crm: got unexpected error - cfs connection refused - not mounted? err 463 node2/lrm: updating service status from manager failed: cfs connection refused - not mounted? -err 463 node2/lrm: updating service status from manager failed: cfs connection refused - not mounted? err 463 node2/lrm: unable to write lrm status file - cfs connection refused - not mounted? err 482 node2/crm: could not read manager status: cfs connection refused - not mounted? err 482 node2/crm: got unexpected error - cfs connection refused - not mounted? err 483 node2/lrm: updating service status from manager failed: cfs connection refused - not mounted? -err 483 node2/lrm: updating service status from manager failed: cfs connection refused - not mounted? err 483 node2/lrm: unable to write lrm status file - cfs connection refused - not mounted? err 502 node2/crm: could not read manager status: cfs connection refused - not mounted? err 502 node2/crm: got unexpected error - cfs connection refused - not mounted? err 503 node2/lrm: updating service status from manager failed: cfs connection refused - not mounted? -err 503 node2/lrm: updating service status from manager failed: cfs connection refused - not mounted? err 503 node2/lrm: unable to write lrm status file - cfs connection refused - not mounted? info 520 cmdlist: execute pve-manager-version node2 set 9.0.0 err 522 node2/crm: could not read manager status: cfs connection refused - not mounted? err 522 node2/crm: got unexpected error - cfs connection refused - not mounted? err 523 node2/lrm: updating service status from manager failed: cfs connection refused - not mounted? -err 523 node2/lrm: updating service status from manager failed: cfs connection refused - not mounted? err 523 node2/lrm: unable to write lrm status file - cfs connection refused - not mounted? err 542 node2/crm: could not read manager status: cfs connection refused - not mounted? err 542 node2/crm: got unexpected error - cfs connection refused - not mounted? err 543 node2/lrm: updating service status from manager failed: cfs connection refused - not mounted? -err 543 node2/lrm: updating service status from manager failed: cfs connection refused - not mounted? err 543 node2/lrm: unable to write lrm status file - cfs connection refused - not mounted? err 562 node2/crm: could not read manager status: cfs connection refused - not mounted? err 562 node2/crm: got unexpected error - cfs connection refused - not mounted? err 563 node2/lrm: updating service status from manager failed: cfs connection refused - not mounted? -err 563 node2/lrm: updating service status from manager failed: cfs connection refused - not mounted? err 563 node2/lrm: unable to write lrm status file - cfs connection refused - not mounted? err 582 node2/crm: could not read manager status: cfs connection refused - not mounted? err 582 node2/crm: got unexpected error - cfs connection refused - not mounted? err 583 node2/lrm: updating service status from manager failed: cfs connection refused - not mounted? -err 583 node2/lrm: updating service status from manager failed: cfs connection refused - not mounted? err 583 node2/lrm: unable to write lrm status file - cfs connection refused - not mounted? err 602 node2/crm: could not read manager status: cfs connection refused - not mounted? err 602 node2/crm: got unexpected error - cfs connection refused - not mounted? err 603 node2/lrm: updating service status from manager failed: cfs connection refused - not mounted? -err 603 node2/lrm: updating service status from manager failed: cfs connection refused - not mounted? err 603 node2/lrm: unable to write lrm status file - cfs connection refused - not mounted? info 620 cmdlist: execute cfs node2 rw work noti 702 node2/crm: start ha group migration... -- 2.47.3