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 112391FF0AF for ; Fri, 06 Nov 2026 10:57:21 +0100 (CET) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id 0FAB421677; Fri, 06 Nov 2026 10:57:11 +0100 (CET) From: Daniel Kral To: pve-devel@lists.proxmox.com Subject: [PATCH ha-manager v2 6/7] manager: remove failed nodes earlier in select_service_node Date: Fri, 6 Nov 2026 10:56:49 +0100 Message-ID: <20261106095650.72865-7-d.kral@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20261106095650.72865-1-d.kral@proxmox.com> References: <20261106095650.72865-1-d.kral@proxmox.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1793959024670 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.695 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_MED -2.3 Sender listed at https://www.dnswl.org/, medium 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: MNCJTWKR4FGVHGVYGU66WKO23O5KAR6E X-Message-ID-Hash: MNCJTWKR4FGVHGVYGU66WKO23O5KAR6E 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: This is done in preparation of an upcoming patch, which moves the maintenance node fallback behavior logic up as well, so move up the failed nodes earlier here as well to maintain it. This does not change the behavior of select_service_node(), because the now subsequent random migrations check is only done if the $node_preference = 'none', while the failed nodes are only removed in $node_preference = 'try-next'. Suggested-by: Michael Köppl Signed-off-by: Daniel Kral --- changes since v1: - new! src/PVE/HA/Manager.pm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/PVE/HA/Manager.pm b/src/PVE/HA/Manager.pm index 3c768a86..b2b74282 100644 --- a/src/PVE/HA/Manager.pm +++ b/src/PVE/HA/Manager.pm @@ -367,6 +367,13 @@ sub select_service_node { my ($allowed_nodes, $pri_nodes) = get_node_affinity($node_affinity, $sid, $online_nodes); + # try to avoid nodes where the HA resource failed already if we want to relocate + if ($node_preference eq 'try-next') { + for my $node (@$tried_nodes) { + delete $pri_nodes->{$node}; + } + } + return undef if !%$pri_nodes; # stay on current node if possible (avoids random migrations) @@ -381,13 +388,6 @@ sub select_service_node { return $current_node; } - # try to avoid nodes where the service failed already if we want to relocate - if ($node_preference eq 'try-next') { - foreach my $node (@$tried_nodes) { - delete $pri_nodes->{$node}; - } - } - return $maintenance_fallback if defined($maintenance_fallback) && $pri_nodes->{$maintenance_fallback}; -- 2.47.3