Skip to content

Commit 3db1746

Browse files
committed
Merge branch '4.11'
2 parents 06ef61b + 7030549 commit 3db1746

1 file changed

Lines changed: 13 additions & 5 deletions

File tree

plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtMigrateCommandWrapper.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -172,13 +172,21 @@ Use VIR_DOMAIN_XML_SECURE (value = 1) prior to v1.0.0.
172172

173173
// pause vm if we meet the vm.migrate.pauseafter threshold and not already paused
174174
final int migratePauseAfter = libvirtComputingResource.getMigratePauseAfter();
175-
if (migratePauseAfter > 0 && sleeptime > migratePauseAfter && dm.getInfo().state == DomainState.VIR_DOMAIN_RUNNING ) {
176-
s_logger.info("Pausing VM " + vmName + " due to property vm.migrate.pauseafter setting to " + migratePauseAfter+ "ms to complete migration");
175+
if (migratePauseAfter > 0 && sleeptime > migratePauseAfter) {
176+
DomainState state = null;
177177
try {
178-
dm.suspend();
178+
state = dm.getInfo().state;
179179
} catch (final LibvirtException e) {
180-
// pause could be racy if it attempts to pause right when vm is finished, simply warn
181-
s_logger.info("Failed to pause vm " + vmName + " : " + e.getMessage());
180+
s_logger.info("Couldn't get VM domain state after " + sleeptime + "ms: " + e.getMessage());
181+
}
182+
if (state != null && state == DomainState.VIR_DOMAIN_RUNNING) {
183+
try {
184+
s_logger.info("Pausing VM " + vmName + " due to property vm.migrate.pauseafter setting to " + migratePauseAfter + "ms to complete migration");
185+
dm.suspend();
186+
} catch (final LibvirtException e) {
187+
// pause could be racy if it attempts to pause right when vm is finished, simply warn
188+
s_logger.info("Failed to pause vm " + vmName + " : " + e.getMessage());
189+
}
182190
}
183191
}
184192
}

0 commit comments

Comments
 (0)