diff --git a/pkg/compute/models/disks.go b/pkg/compute/models/disks.go index 0644e5dc44..ab2580682d 100644 --- a/pkg/compute/models/disks.go +++ b/pkg/compute/models/disks.go @@ -216,14 +216,11 @@ func (manager *SDiskManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQu return nil, err } guest := iGuest.(*SGuest) - hoststorages := HoststorageManager.Query().SubQuery() - q = q.Join(hoststorages, sqlchemy.AND( - sqlchemy.Equals(hoststorages.Field("host_id"), guest.HostId), - sqlchemy.IsFalse(hoststorages.Field("deleted")))). - Join(storages, sqlchemy.AND( - sqlchemy.Equals(storages.Field("id"), hoststorages.Field("storage_id")), - sqlchemy.IsFalse(storages.Field("deleted")))). - Filter(sqlchemy.Equals(storages.Field("id"), q.Field("storage_id"))) + guestDisks := GuestdiskManager.Query().SubQuery() + q = q.Join(guestDisks, sqlchemy.AND( + sqlchemy.Equals(guestDisks.Field("disk_id"), q.Field("id")), + sqlchemy.Equals(guestDisks.Field("guest_id"), guest.Id), + )) } storageStr := jsonutils.GetAnyString(queryDict, []string{"storage", "storage_id"}) diff --git a/pkg/compute/tasks/instance_snapshot_create_task.go b/pkg/compute/tasks/instance_snapshot_create_task.go index 937c203abf..c4ed9742a0 100644 --- a/pkg/compute/tasks/instance_snapshot_create_task.go +++ b/pkg/compute/tasks/instance_snapshot_create_task.go @@ -63,7 +63,7 @@ func (self *InstanceSnapshotCreateTask) taskFail( guest.SetStatus(self.UserCred, compute.VM_INSTANCE_SNAPSHOT_FAILED, reason) db.OpsLog.LogEvent(isp, db.ACT_ALLOCATE_FAIL, reason, self.UserCred) - logclient.AddActionLogWithStartable(self, isp, logclient.ACT_CREATE, false, self.UserCred, false) + logclient.AddActionLogWithStartable(self, isp, logclient.ACT_CREATE, reason, self.UserCred, false) notifyclient.NotifySystemError(isp.GetId(), isp.Name, compute.INSTANCE_SNAPSHOT_FAILED, reason) self.SetStageFailed(ctx, reason) } @@ -79,7 +79,7 @@ func (self *InstanceSnapshotCreateTask) taskComplete( guest.StartSyncstatus(ctx, self.UserCred, "") db.OpsLog.LogEvent(isp, db.ACT_ALLOCATE, "instance snapshot create success", self.UserCred) - logclient.AddActionLogWithStartable(self, isp, logclient.ACT_CREATE, false, self.UserCred, true) + logclient.AddActionLogWithStartable(self, isp, logclient.ACT_CREATE, "", self.UserCred, true) self.SetStageComplete(ctx, nil) } diff --git a/pkg/hostman/guestman/guestman.go b/pkg/hostman/guestman/guestman.go index baf4a1ba9e..c22c9fecba 100644 --- a/pkg/hostman/guestman/guestman.go +++ b/pkg/hostman/guestman/guestman.go @@ -767,6 +767,12 @@ func (m *SGuestManager) CancelBlockJobs(ctx context.Context, params interface{}) if !ok { return nil, hostutils.ParamsError } + defer func() { + if r := recover(); r != nil { + log.Errorf("STACK: %v \n %s", r, debug.Stack()) + hostutils.TaskFailed(ctx, fmt.Sprintf("recover: %v", r)) + } + }() guest, _ := m.GetServer(sid) NewCancelBlockJobsTask(ctx, guest).Start() return nil, nil