[pve-devel] [PATCH ha-manager 3/6] Env/PVE2: get_node_info: ensure quorate and actual info is used

Dietmar Maurer dietmar at proxmox.com
Wed Nov 8 07:01:09 CET 2017


Is this whole thing related to this patch:

https://git.proxmox.com/?p=pve-cluster.git;a=commitdiff;h=7bac9ca573ad13f527663d27f1a9177279d69b76

?

More questions below:

> On November 7, 2017 at 3:27 PM Thomas Lamprecht <t.lamprecht at proxmox.com>
> wrote:
> 
> 
> Do not trust member information if not quorate and if quorate ensure
> member information is up do date.
> 
> Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
> ---
>  src/PVE/HA/Env/PVE2.pm | 22 ++++++++++++----------
>  1 file changed, 12 insertions(+), 10 deletions(-)
> 
> diff --git a/src/PVE/HA/Env/PVE2.pm b/src/PVE/HA/Env/PVE2.pm
> index 8baf2d0..2db56af 100644
> --- a/src/PVE/HA/Env/PVE2.pm
> +++ b/src/PVE/HA/Env/PVE2.pm
> @@ -177,17 +177,19 @@ sub get_node_info {
>  
>      my ($node_info, $quorate) = ({}, 0);
>  
> +    if (PVE::Cluster::check_cfs_quorum(1)) {
> +	$quorate = 1;
> +
> +	PVE::Cluster::cfs_update();

Why? We do the update in loop_start_hook()

IMHO this should return all information available, even if we are not quorate.
You need to decide if you trust that somewhere else. I think about something
like this:

diff --git a/src/PVE/HA/Manager.pm b/src/PVE/HA/Manager.pm
index 25a7398..57410cb 100644
--- a/src/PVE/HA/Manager.pm
+++ b/src/PVE/HA/Manager.pm
@@ -361,7 +361,12 @@ sub manage {

     my ($haenv, $ms, $ns, $ss) = ($self->{haenv}, $self->{ms}, $self->{ns},
$self->{ss});

-    $ns->update($haenv->get_node_info());
+    my ($node_info, $quorate) = $haenv->get_node_info();
+    if (!$quorate) {
+       $haenv->log('info', "master lost quorum"); # fixme: I am not sure what
to log here
+       return;
+    }
+    $ns->update($node_info);

     if (!$ns->node_is_online($haenv->nodename())) {
        $haenv->log('info', "master seems offline");




More information about the pve-devel mailing list