Martin Peřina has uploaded a new change for review. Change subject: core: Adds scheduled job DwhHeartBeat ......................................................................
core: Adds scheduled job DwhHeartBeat Adds DwhHeartBeatInterval option to ConfigValues. Adds scheduled job DwhHeartBeat that periodically updates dwhHeart variable in dwh_history_timekeeping table. DwhHeartBeatInterval is editable in engine-config. Change-Id: Ib0db94681e678f10af40e2ffd3399231e0b8e421 Bug-Url: https://bugzilla.redhat.com/962177 Signed-off-by: Martin Perina <mper...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/dwh/DwhHeartBeat.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java M packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql M packaging/etc/engine-config/engine-config.properties 5 files changed, 75 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/28/19828/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java index 3886002..2e89bf3 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java @@ -8,6 +8,7 @@ import javax.ejb.Singleton; import javax.ejb.Startup; +import org.ovirt.engine.core.bll.dwh.DwhHeartBeat; import org.ovirt.engine.core.bll.gluster.GlusterJobsManager; import org.ovirt.engine.core.bll.job.ExecutionHandler; import org.ovirt.engine.core.bll.network.MacPoolManager; @@ -88,6 +89,8 @@ } SchedulingManager.getInstance().init(); + + new DwhHeartBeat().init(); } } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/dwh/DwhHeartBeat.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/dwh/DwhHeartBeat.java new file mode 100644 index 0000000..ccacb02 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/dwh/DwhHeartBeat.java @@ -0,0 +1,64 @@ +package org.ovirt.engine.core.bll.dwh; + +import java.util.Date; +import java.util.concurrent.TimeUnit; + +import org.ovirt.engine.core.common.businessentities.DwhHistoryTimekeeping; +import org.ovirt.engine.core.common.businessentities.DwhHistoryTimekeepingVariable; +import org.ovirt.engine.core.common.config.Config; +import org.ovirt.engine.core.common.config.ConfigValues; +import org.ovirt.engine.core.dal.dbbroker.DbFacade; +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; + +/** + * Job notifies DWH, that engine is up and running + */ +public class DwhHeartBeat { + /** + * Name of method to execute periodically + */ + private static final String DWH_HEART_BEAT_METHOD = "engineIsRunningNotification"; + + /** + * Logger instance + */ + private static Log log = LogFactory.getLog(DwhHeartBeat.class); + + /** + * Instance of heartBeat variable + */ + private DwhHistoryTimekeeping heartBeatVar; + + /** + * Update {@code dwh_history_timekeeping} table to notify DWH, that engine is up an running + */ + @OnTimerMethodAnnotation(DWH_HEART_BEAT_METHOD) + public void engineIsRunningNotification() { + try { + heartBeatVar.setDateTime(new Date()); + DbFacade.getInstance().getDwhHistoryTimekeepingDao().save(heartBeatVar); + } catch (Exception ex) { + log.error("Error updating DWH Heart Beat: ", ex); + } + } + + /** + * Starts up DWH Heart Beat as a periodic job + */ + public void init() { + log.info("Initializing DWH Heart Beat"); + heartBeatVar = new DwhHistoryTimekeeping(); + heartBeatVar.setVariable(DwhHistoryTimekeepingVariable.HEART_BEAT); + + SchedulerUtilQuartzImpl.getInstance().scheduleAFixedDelayJob(this, + DWH_HEART_BEAT_METHOD, + new Class[] {}, + new Object[] {}, + 0, + Config.<Integer> GetValue(ConfigValues.DwhHeartBeatInterval), + TimeUnit.SECONDS); + } +} 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 4b701fb..18d3d1a 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 @@ -1517,6 +1517,10 @@ @DefaultValueAttribute("true") UseFqdnForRdpIfAvailable(539), + @TypeConverterAttribute(Integer.class) + @DefaultValueAttribute("30") + DwhHeartBeatInterval(540), + Invalid(65535); private int intValue; diff --git a/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql b/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql index 5c9d5a1..22d8f3c 100644 --- a/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql +++ b/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql @@ -621,6 +621,8 @@ select fn_db_add_config_value('ExternalSchedulerEnabled','false','general'); select fn_db_add_config_value('ExternalSchedulerResponseTimeout','120000','general'); +select fn_db_add_config_value('DwhHeartBeatInterval', '30', 'general'); + ------------------------------------------------------------------------------------ -- Update with override section ------------------------------------------------------------------------------------ diff --git a/packaging/etc/engine-config/engine-config.properties b/packaging/etc/engine-config/engine-config.properties index 9fb2088..7a2b2bd 100644 --- a/packaging/etc/engine-config/engine-config.properties +++ b/packaging/etc/engine-config/engine-config.properties @@ -336,3 +336,5 @@ ExternalSchedulerEnabled.type=Boolean ExternalSchedulerResponseTimeout.description=The response timeout of the external scheduler proxy ExternalSchedulerResponseTimeout.type=Integer +DwhHeartBeatInterval.description="Interval after which DWH is informed that engine is running (in seconds)" +DwhHeartBeatInterval.type=Integer -- To view, visit http://gerrit.ovirt.org/19828 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib0db94681e678f10af40e2ffd3399231e0b8e421 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.3 Gerrit-Owner: Martin Peřina <mper...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches