Ravi Nori has uploaded a new change for review.

Change subject: engine : Introduce CommandEntityCleanupManager
......................................................................

engine : Introduce CommandEntityCleanupManager

Introduce CommandEntityCleanupManager that
cleans old commands in command_entities table
based on a new option CommandEntityAgingThreshold

Change-Id: Ic9a5ea74513e7e56f21b2861b899e6d8868affe8
Bug-Url: https://bugzilla.redhat.com/1083769
Signed-off-by: Ravi Nori <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandEntityCleanupManager.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
A packaging/dbscripts/upgrade/03_05_0180_add_command_entity_cleanup_options.sql
4 files changed, 66 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/91/26691/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java
index fd9cd00..9887611 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java
@@ -190,6 +190,9 @@
         // Initialize the AuditLogCleanupManager
         AuditLogCleanupManager.getInstance();
 
+        // Initialize the CommandEntityCleanupManager
+        CommandEntityCleanupManager.getInstance();
+
         TagsDirector.getInstance().init();
 
         IsoDomainListSyncronizer.getInstance();
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandEntityCleanupManager.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandEntityCleanupManager.java
new file mode 100644
index 0000000..f48fe9c
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandEntityCleanupManager.java
@@ -0,0 +1,54 @@
+package org.ovirt.engine.core.bll;
+
+import org.ovirt.engine.core.bll.tasks.TaskManagerUtil;
+import org.ovirt.engine.core.common.config.Config;
+import org.ovirt.engine.core.common.config.ConfigValues;
+import org.ovirt.engine.core.compat.DateTime;
+import org.ovirt.engine.core.utils.log.Log;
+import org.ovirt.engine.core.utils.log.LogFactory;
+import org.ovirt.engine.core.utils.timer.OnTimerMethodAnnotation;
+import org.ovirt.engine.core.utils.timer.SchedulerUtilQuartzImpl;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+
+public class CommandEntityCleanupManager {
+    private static Log log = LogFactory.getLog(AuditLogCleanupManager.class);
+
+    private static final CommandEntityCleanupManager _instance = new 
CommandEntityCleanupManager();
+
+    public static CommandEntityCleanupManager getInstance() {
+        return _instance;
+    }
+
+    private CommandEntityCleanupManager() {
+        log.info("Start initializing " + getClass().getSimpleName());
+        Calendar calendar = new GregorianCalendar();
+        Date mCommandEntityCleanupTime = Config.<DateTime> 
getValue(ConfigValues.CommandEntityCleanupTime);
+        calendar.setTimeInMillis(mCommandEntityCleanupTime.getTime());
+
+        String cronExpression = String.format("%d %d %d * * ?", 
calendar.get(Calendar.SECOND),
+                calendar.get(Calendar.MINUTE), 
calendar.get(Calendar.HOUR_OF_DAY));
+
+        log.info("Setting command entity cleanup manager to run at: " + 
cronExpression);
+        SchedulerUtilQuartzImpl.getInstance().scheduleACronJob(this, 
"onTimer", new Class[] {}, new Object[] {},
+                cronExpression);
+        log.info("Finished initializing " + getClass().getSimpleName());
+    }
+
+    @OnTimerMethodAnnotation("onTimer")
+    public void onTimer() {
+        try {
+            log.info("Start deleteAgedOutCommandEntities");
+            DateTime latestTimeToKeep = DateTime.getNow().addDays(
+                    
Config.<Integer>getValue(ConfigValues.CommandEntityAgingThreshold)
+                            * -1);
+            TaskManagerUtil.removeAllCommandsBeforeDate(latestTimeToKeep);
+            log.info("Finished deleteAgedOutCommandEntities");
+        } catch (RuntimeException e) {
+            log.error("deleteAgedOutCommandEntities failed with exception", e);
+        }
+    }
+
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
index 889b559..59d81d1 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
@@ -91,6 +91,13 @@
     @TypeConverterAttribute(Integer.class)
     @DefaultValueAttribute("30")
     AuditLogAgingThreshold,
+    @TypeConverterAttribute(Date.class)
+    @DefaultValueAttribute("03:35:35")
+    CommandEntityCleanupTime,
+    @Reloadable
+    @TypeConverterAttribute(Integer.class)
+    @DefaultValueAttribute("30")
+    CommandEntityAgingThreshold,
     @Reloadable
     @TypeConverterAttribute(String.class)
     
@DefaultValueAttribute("drac5,ilo,ipmilan,rsa,bladecenter,alom,apc,eps,wti,rsb")
diff --git 
a/packaging/dbscripts/upgrade/03_05_0180_add_command_entity_cleanup_options.sql 
b/packaging/dbscripts/upgrade/03_05_0180_add_command_entity_cleanup_options.sql
new file mode 100644
index 0000000..6ad64fb
--- /dev/null
+++ 
b/packaging/dbscripts/upgrade/03_05_0180_add_command_entity_cleanup_options.sql
@@ -0,0 +1,2 @@
+select fn_db_add_config_value('CommandEntityAgingThreshold','30','general');
+select fn_db_add_config_value('CommandEntityCleanupTime','03:35:35','general');


-- 
To view, visit http://gerrit.ovirt.org/26691
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic9a5ea74513e7e56f21b2861b899e6d8868affe8
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Ravi Nori <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to