From: Daniel Kral <d.kral@proxmox.com>
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 [thread overview]
Message-ID: <20260720123705.216089-14-d.kral@proxmox.com> (raw)
In-Reply-To: <20260720123705.216089-1-d.kral@proxmox.com>
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 <d.kral@proxmox.com>
---
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
next prev parent reply other threads:[~2026-07-20 12:38 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-20 12:36 [PATCH-SERIES ha-manager 00/16] some sid parsing and LRM speedup improvements Daniel Kral
2026-07-20 12:36 ` [PATCH ha-manager 01/16] make tidy Daniel Kral
2026-07-20 12:36 ` [PATCH ha-manager 02/16] resources: remove commented ipaddr resource type Daniel Kral
2026-07-20 12:36 ` [PATCH ha-manager 03/16] tree-wide: use the term vmid instead of name when referring to VMs/CTs Daniel Kral
2026-07-20 12:36 ` [PATCH ha-manager 04/16] api: resources: remove unused return values at parse_sid callsites Daniel Kral
2026-07-20 12:36 ` [PATCH ha-manager 05/16] make parse_sid always return an array Daniel Kral
2026-07-20 12:36 ` [PATCH ha-manager 06/16] config: use early returns in parse_sid Daniel Kral
2026-07-20 12:36 ` [PATCH ha-manager 07/16] config: make update_single_resource_config_inplace only allow sids Daniel Kral
2026-07-20 12:36 ` [PATCH ha-manager 08/16] introduce separate parse_vmid_or_sid helper subroutine Daniel Kral
2026-07-20 12:36 ` [PATCH ha-manager 09/16] drop the unmodified sid return array entry value from parse_sid Daniel Kral
2026-07-20 12:36 ` [PATCH ha-manager 10/16] lrm: document and initialize LRM instance properties Daniel Kral
2026-07-20 12:37 ` [PATCH ha-manager 11/16] lrm: rename update_lrm_status to flush_lrm_status Daniel Kral
2026-07-20 12:37 ` [PATCH ha-manager 12/16] lrm: rename update_service_status to update_lrm_status Daniel Kral
2026-07-20 12:37 ` Daniel Kral [this message]
2026-07-20 12:37 ` [PATCH ha-manager 14/16] lrm: read service config once per work iteration Daniel Kral
2026-07-20 12:37 ` [PATCH ha-manager 15/16] lrm: compute valid service uids hash set " Daniel Kral
2026-07-20 12:37 ` [PATCH ha-manager 16/16] lrm: prune non-existent HA resources from results " Daniel Kral
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260720123705.216089-14-d.kral@proxmox.com \
--to=d.kral@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.