Skip to content

Commit b204e5b

Browse files
committed
Refactor downtime logic
1 parent 0960b4c commit b204e5b

1 file changed

Lines changed: 11 additions & 10 deletions

File tree

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

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -243,20 +243,21 @@ Use VIR_DOMAIN_XML_SECURE (value = 1) prior to v1.0.0.
243243
final Future<Domain> migrateThread = executor.submit(worker);
244244
executor.shutdown();
245245
long sleeptime = 0;
246+
final int migrateDowntime = libvirtComputingResource.getMigrateDowntime();
247+
boolean isMigrateDowntimeSet = false;
248+
246249
while (!executor.isTerminated()) {
247250
Thread.sleep(100);
248251
sleeptime += 100;
249-
if (sleeptime >= 1000) { // wait 1s before attempting to set downtime on migration, since I don't know of a VIR_DOMAIN_MIGRATING state
250-
final int migrateDowntime = libvirtComputingResource.getMigrateDowntime();
251-
if (migrateDowntime > 0 ) {
252-
try {
253-
final int setDowntime = dm.migrateSetMaxDowntime(migrateDowntime);
254-
if (setDowntime == 0 ) {
255-
logger.debug("Set max downtime for migration of " + vmName + " to " + String.valueOf(migrateDowntime) + "ms");
256-
}
257-
} catch (final LibvirtException e) {
258-
logger.debug("Failed to set max downtime for migration, perhaps migration completed? Error: " + e.getMessage());
252+
if (!isMigrateDowntimeSet && migrateDowntime > 0 && sleeptime >= 1000) { // wait 1s before attempting to set downtime on migration, since I don't know of a VIR_DOMAIN_MIGRATING state
253+
try {
254+
final int setDowntime = dm.migrateSetMaxDowntime(migrateDowntime);
255+
if (setDowntime == 0 ) {
256+
isMigrateDowntimeSet = true;
257+
logger.debug("Set max downtime for migration of " + vmName + " to " + String.valueOf(migrateDowntime) + "ms");
259258
}
259+
} catch (final LibvirtException e) {
260+
logger.debug("Failed to set max downtime for migration, perhaps migration completed? Error: " + e.getMessage());
260261
}
261262
}
262263
if (sleeptime % 1000 == 0) {

0 commit comments

Comments
 (0)