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
