Hello mooli tayer, I'd like you to do a code review. Please visit
http://gerrit.ovirt.org/19166 to review the following change. Change subject: engine: application touches a file to detect un orderly shutdown ...................................................................... engine: application touches a file to detect un orderly shutdown Used to diagnose unexpected engine stop by the notification service. Previously we used the pid file, buy this solution becomes irrelevant for systemd. Change-Id: Ic8de64637299e7932a5a2761c7bb495373c418aa Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=743660 Signed-off-by: Mooli Tayer <mta...@redhat.com> --- M backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/EngineLocalConfig.java M backend/manager/tools/src/main/java/org/ovirt/engine/core/notifier/EngineMonitorService.java M packaging/services/ovirt-engine/ovirt-engine.conf.in M packaging/services/ovirt-engine/ovirt-engine.py 4 files changed, 37 insertions(+), 14 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/66/19166/1 diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/EngineLocalConfig.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/EngineLocalConfig.java index d03521b..b8107a6 100644 --- a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/EngineLocalConfig.java +++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/EngineLocalConfig.java @@ -209,4 +209,8 @@ public String getPKIEngineStoreAlias() { return getProperty("ENGINE_PKI_ENGINE_STORE_ALIAS"); } + + public File getEngineUpMark(){ + return getFile("ENGINE_UP_MARK"); + } } diff --git a/backend/manager/tools/src/main/java/org/ovirt/engine/core/notifier/EngineMonitorService.java b/backend/manager/tools/src/main/java/org/ovirt/engine/core/notifier/EngineMonitorService.java index 602fd83..6f9e16f 100644 --- a/backend/manager/tools/src/main/java/org/ovirt/engine/core/notifier/EngineMonitorService.java +++ b/backend/manager/tools/src/main/java/org/ovirt/engine/core/notifier/EngineMonitorService.java @@ -1,6 +1,5 @@ package org.ovirt.engine.core.notifier; -import java.io.File; import java.io.IOException; import java.net.HttpURLConnection; import java.net.MalformedURLException; @@ -287,8 +286,9 @@ } } else { // reports an error for non responsive server - if(new File(pidFile).exists()) { - // assumed crash, since the pid file is still there + EngineLocalConfig config = EngineLocalConfig.getInstance(); + if(config.getEngineUpMark().exists()) { + // assumed crash, since engine up file is still there insertEventIntoAuditLogSafe(AuditLogType.VDC_STOP, AuditLogSeverity.ERROR, ENGINE_NOT_RESPONDING_ERROR, diff --git a/packaging/services/ovirt-engine/ovirt-engine.conf.in b/packaging/services/ovirt-engine/ovirt-engine.conf.in index 1131a17..b0510c6 100644 --- a/packaging/services/ovirt-engine/ovirt-engine.conf.in +++ b/packaging/services/ovirt-engine/ovirt-engine.conf.in @@ -38,6 +38,12 @@ ENGINE_SPICE_HTML5_DIR="/usr/share/spice-html5" # +# A file created on init and removed on orderly shutdown +# Used to diagnose unexpected engine stop by the notification service. +# +ENGINE_UP_MARK="${ENGINE_VAR}/engine.up" + +# # Intervals for stoping the engine: # ENGINE_STOP_TIME=10 diff --git a/packaging/services/ovirt-engine/ovirt-engine.py b/packaging/services/ovirt-engine/ovirt-engine.py index 1c2a053..d7eafdc 100755 --- a/packaging/services/ovirt-engine/ovirt-engine.py +++ b/packaging/services/ovirt-engine/ovirt-engine.py @@ -447,17 +447,30 @@ return (consoleLog, consoleLog) def daemonContext(self): - self.daemonAsExternalProcess( - executable=self._executable, - args=self._engineArgs, - env=self._engineEnv, - stopTime=self._config.getinteger( - 'ENGINE_STOP_TIME' - ), - stopInterval=self._config.getinteger( - 'ENGINE_STOP_INTERVAL' - ), - ) + try: + # + # create mark file to be used by notifier service + # + with open(self._config.get('ENGINE_UP_MARK'), 'w') as f: + f.write('%s\n' % os.getpid()) + + self.daemonAsExternalProcess( + executable=self._executable, + args=self._engineArgs, + env=self._engineEnv, + stopTime=self._config.getinteger( + 'ENGINE_STOP_TIME' + ), + stopInterval=self._config.getinteger( + 'ENGINE_STOP_INTERVAL' + ), + ) + + raise self.TerminateException() + + except self.TerminateException: + if os.path.exists(self._config.get('ENGINE_UP_MARK')): + os.remove(self._config.get('ENGINE_UP_MARK')) def daemonCleanup(self): self._tempDir.destroy() -- To view, visit http://gerrit.ovirt.org/19166 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic8de64637299e7932a5a2761c7bb495373c418aa Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.3 Gerrit-Owner: Alon Bar-Lev <alo...@redhat.com> Gerrit-Reviewer: mooli tayer <mta...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches