[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