[pve-devel] [RFC PATCH cluster 2/2] cluster: cfs_update: option to die rather than warn

Thomas Lamprecht t.lamprecht at proxmox.com
Wed Oct 11 10:34:29 CEST 2017


On 10/11/2017 09:36 AM, Wolfgang Bumiller wrote:
> It can be useful to know whether we actually have an empty
> vm list or whether the last cfs_update call simply failed.
> Previously this only warned.
> 
> This way we can avoid a nasty type of race condition. For
> instance in pvesr where it's possible that the vm list query
> fails while everything else worked (eg. if the pmxcfs was
> just starting up, or died between the queries), in which
> case it would assume there are no guests and the
> purge-old-states step would clear out the entire local state
> file.
> ---
> This will be used in PVE::ReplicationState::purge_old_states to verify
> that it's not accidentally deleting valid states.
> 
>  data/PVE/Cluster.pm | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/data/PVE/Cluster.pm b/data/PVE/Cluster.pm
> index 05f144f..3e27c52 100644
> --- a/data/PVE/Cluster.pm
> +++ b/data/PVE/Cluster.pm
> @@ -448,6 +448,7 @@ my $ipcc_get_cluster_log = sub {
>  my $ccache = {};
>  
>  sub cfs_update {
> +    my ($fail) = @_;
>      eval {
>  	my $res = &$ipcc_send_rec_json(1);
>  	#warn "GOT1: " . Dumper($res);
> @@ -469,6 +470,7 @@ sub cfs_update {
>  	$vmlist = {};
>  	$clinfo = {};
>  	$ccache = {};
> +	die $err if $fail;
>  	warn $err;
>      }
>  
> @@ -481,6 +483,7 @@ sub cfs_update {
>      $err = $@;
>      if ($err) {
>  	$clinfo = {};
> +	die $err if $fail;
>  	warn $err;
>      }
>  
> @@ -493,6 +496,7 @@ sub cfs_update {
>      $err = $@;
>      if ($err) {
>  	$vmlist = {};
> +	die $err if $fail;
>  	warn $err;
>      }
>  }
> 

Reviewed-by: Thomas Lamprecht <t.lamprecht.org>

The guest-common change looks also OK but is in code where I've
done very little with...




More information about the pve-devel mailing list