From e18da15479cbf842b009bb4a8465166bc517a204 Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Sun, 16 Jan 2022 14:54:07 +0800 Subject: [PATCH] fix: handle exception that qemu quit or cancel migrate during migration --- pkg/hostman/guestman/guesttasks.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/pkg/hostman/guestman/guesttasks.go b/pkg/hostman/guestman/guesttasks.go index 71681c1df6..e47138c683 100644 --- a/pkg/hostman/guestman/guesttasks.go +++ b/pkg/hostman/guestman/guesttasks.go @@ -682,7 +682,14 @@ func (s *SGuestLiveMigrateTask) startMigrateStatusCheck(res string) { s.c = nil break case <-time.After(time.Second * 5): - s.Monitor.GetMigrateStatus(s.onGetMigrateStatus) + if s.Monitor != nil { + s.Monitor.GetMigrateStatus(s.onGetMigrateStatus) + } else { + log.Errorf("server %s(%s) migrate stopped unexpectedly", s.GetId(), s.GetName()) + s.migrateTask = nil + hostutils.TaskFailed(s.ctx, fmt.Sprintf("Migrate error: %s", res)) + return + } } } } @@ -690,7 +697,7 @@ func (s *SGuestLiveMigrateTask) startMigrateStatusCheck(res string) { func (s *SGuestLiveMigrateTask) onGetMigrateStatus(status string) { if status == "completed" { s.migrateComplete() - } else if status == "failed" { + } else if status == "failed" || status == "cancelled" { s.migrateTask = nil close(s.c) hostutils.TaskFailed(s.ctx, fmt.Sprintf("Query migrate got status: %s", status))