Arik Hadas has uploaded a new change for review.
Change subject: core: remove jobs of IVdsAsyncCommands on engine startup
......................................................................
core: remove jobs of IVdsAsyncCommands on engine startup
Since commands that inherit from IVdsAsyncCommand are not saved to db,
after engine restart we cannot continue to track them. That also means
that the jobs of such commands are not cleaned after engine restarts.
The solution is to remove the jobs of such commands that remained in
running ('STARTED') state. It is safe to do so because the commands are
not restored after the restart so no one will try to access those jobs.
Change-Id: I5973c05f41b90ec48c2961c6f89f5aa110944d6d
Bug-Url: https://bugzilla.redhat.com/1099505
Signed-off-by: Arik Hadas <[email protected]>
---
M
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/job/JobRepositoryImpl.java
M
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/JobDao.java
M
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/JobDaoDbFacadeImpl.java
M packaging/dbscripts/job_sp.sql
4 files changed, 22 insertions(+), 0 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/74/28474/1
diff --git
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/job/JobRepositoryImpl.java
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/job/JobRepositoryImpl.java
index 1f51f660..dfeb6e6 100644
---
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/job/JobRepositoryImpl.java
+++
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/job/JobRepositoryImpl.java
@@ -216,6 +216,7 @@
@Override
public Void runInTransaction() {
+ jobDao.deleteRunningJobsOfTasklessCommands();
jobDao.updateStartedExecutionEntitiesToUnknown(new Date());
return null;
}
diff --git
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/JobDao.java
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/JobDao.java
index 7027371..b6ddb72 100644
---
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/JobDao.java
+++
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/JobDao.java
@@ -88,4 +88,6 @@
* @return true if the job contains a step associated with VDSM task, else
false
*/
boolean checkIfJobHasTasks(Guid jobId);
+
+ void deleteRunningJobsOfTasklessCommands();
}
diff --git
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/JobDaoDbFacadeImpl.java
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/JobDaoDbFacadeImpl.java
index a9fca48..70cecfa 100644
---
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/JobDaoDbFacadeImpl.java
+++
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/JobDaoDbFacadeImpl.java
@@ -95,6 +95,12 @@
}
@Override
+ public void deleteRunningJobsOfTasklessCommands() {
+
getCallsHandler().executeModification("DeleteRunningJobsOfTasklessCommands",
+ getCustomMapSqlParameterSource());
+ }
+
+ @Override
public void deleteCompletedJobs(Date succeededJobs, Date failedJobs) {
MapSqlParameterSource parameterSource =
getCustomMapSqlParameterSource()
.addValue("succeeded_end_time", succeededJobs)
diff --git a/packaging/dbscripts/job_sp.sql b/packaging/dbscripts/job_sp.sql
index 3aa675b..1694f77 100644
--- a/packaging/dbscripts/job_sp.sql
+++ b/packaging/dbscripts/job_sp.sql
@@ -468,6 +468,19 @@
END; $procedure$
LANGUAGE plpgsql;
+------------------------------------------------
+-- Cleanup Jobs of async commands without task
+------------------------------------------------
+Create or replace FUNCTION DeleteRunningJobsOfTasklessCommands()
+RETURNS VOID
+AS $procedure$
+BEGIN
+ DELETE FROM job
+ WHERE (status = 'STARTED'
+ AND action_type IN ('MigrateVm', 'MigrateVmToServer',
'InternalMigrateVm', 'RunVm', 'RunVmOnce'));
+END; $procedure$
+LANGUAGE plpgsql;
+
--------------------------------------------
-- Cleanup Jobs entities by end time
--------------------------------------------
--
To view, visit http://gerrit.ovirt.org/28474
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I5973c05f41b90ec48c2961c6f89f5aa110944d6d
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.4
Gerrit-Owner: Arik Hadas <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches