all lists on lists.proxmox.com
 help / color / mirror / Atom feed
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





  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.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal