From 1a9dc09e838a780991a045dd874144be9557712c Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Wed, 24 May 2017 09:35:01 +0200 Subject: [PATCH] PVE::Replication - aquire guest_migration_lock during replication To block guest migration. --- PVE/Replication.pm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/PVE/Replication.pm b/PVE/Replication.pm index 3d47d1ed..711b08ff 100644 --- a/PVE/Replication.pm +++ b/PVE/Replication.pm @@ -11,11 +11,13 @@ use PVE::ProcFSTools; use PVE::Tools; use PVE::CalendarEvent; use PVE::Cluster; +use PVE::AbstractConfig; use PVE::QemuConfig; use PVE::QemuServer; use PVE::LXC::Config; use PVE::LXC; use PVE::Storage; +use PVE::GuestHelpers; use PVE::ReplicationConfig; # Note: regression tests can overwrite $state_path for testing @@ -388,7 +390,12 @@ my $run_replication = sub { $logfunc->($start_time, "$jobcfg->{id}: start replication job") if $logfunc; - eval { replicate($jobcfg, $state->{last_sync}, $start_time, $logfunc); }; + eval { + my $timeout = 2; # do not wait too long - we repeat periodically anyways + PVE::GuestHelpers::guest_migration_lock( + $jobcfg->{guest}, $timeout, \&replicate, + $jobcfg, $state->{last_sync}, $start_time, $logfunc); + }; my $err = $@; $state->{duration} = tv_interval($t0);