You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2018/12/18 16:41:10 UTC
[openmeetings] branch master updated: [OPENMEETINGS-1967] basic
health check is added
This is an automated email from the ASF dual-hosted git repository.
solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git
The following commit(s) were added to refs/heads/master by this push:
new a72287e5 [OPENMEETINGS-1967] basic health check is added
a72287e5 is described below
commit a72287e5b887aa0785c2f35b87fb988a591c32f1
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Tue Dec 18 23:40:56 2018 +0700
[OPENMEETINGS-1967] basic health check is added
---
.../db/dto/basic/{Info.java => Health.java} | 46 ++++++++++++----------
.../org/apache/openmeetings/db/dto/basic/Info.java | 8 ----
.../service/quartz/scheduler/ReminderJob.java | 16 ++++++++
.../webapp/WEB-INF/classes/applicationContext.xml | 5 +++
.../openmeetings/webservice/InfoWebService.java | 13 ++++++
5 files changed, 60 insertions(+), 28 deletions(-)
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Info.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Health.java
similarity index 70%
copy from openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Info.java
copy to openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Health.java
index f21c04f..6f86f47 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Info.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Health.java
@@ -26,37 +26,43 @@ import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
-import org.apache.openmeetings.util.Version;
-
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
-public class Info implements Serializable {
+public class Health implements Serializable {
private static final long serialVersionUID = 1L;
- private final String version;
- private final String revision;
- private final String buildDate;
- private final boolean inited;
-
- public Info() {
- version = Version.getVersion();
- revision = Version.getRevision();
- buildDate = Version.getBuildDate();
+ public static final Health INSTANCE = new Health();
+ private boolean inited;
+ private boolean installed;
+ private boolean dbOk;
+
+ public Health() {
inited = isInitComplete();
}
- public String getVersion() {
- return version;
+ public boolean isInited() {
+ return inited;
}
- public String getRevision() {
- return revision;
+ public Health setInited(boolean inited) {
+ this.inited = inited;
+ return this;
}
- public String getBuildDate() {
- return buildDate;
+ public boolean isInstalled() {
+ return installed;
}
- public boolean isInited() {
- return inited;
+ public Health setInstalled(boolean installed) {
+ this.installed = installed;
+ return this;
+ }
+
+ public boolean isDbOk() {
+ return dbOk;
+ }
+
+ public Health setDbOk(boolean dbOk) {
+ this.dbOk = dbOk;
+ return this;
}
}
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Info.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Info.java
index f21c04f..3b585bf 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Info.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/Info.java
@@ -18,8 +18,6 @@
*/
package org.apache.openmeetings.db.dto.basic;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.isInitComplete;
-
import java.io.Serializable;
import javax.xml.bind.annotation.XmlAccessType;
@@ -35,13 +33,11 @@ public class Info implements Serializable {
private final String version;
private final String revision;
private final String buildDate;
- private final boolean inited;
public Info() {
version = Version.getVersion();
revision = Version.getRevision();
buildDate = Version.getBuildDate();
- inited = isInitComplete();
}
public String getVersion() {
@@ -55,8 +51,4 @@ public class Info implements Serializable {
public String getBuildDate() {
return buildDate;
}
-
- public boolean isInited() {
- return inited;
- }
}
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/ReminderJob.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/ReminderJob.java
index 36d8af6..bd1e32a 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/ReminderJob.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/ReminderJob.java
@@ -27,10 +27,12 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.isInitComplete;
import org.apache.openmeetings.core.mail.MailHandler;
import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.dto.basic.Health;
import org.apache.openmeetings.db.entity.user.User;
import org.apache.openmeetings.service.calendar.AppointmentLogic;
import org.apache.openmeetings.service.mail.template.subject.RecordingExpiringTemplate;
import org.apache.openmeetings.service.mail.template.subject.SubjectEmailTemplate;
+import org.apache.openmeetings.util.crypt.CryptProvider;
import org.apache.wicket.util.string.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -101,4 +103,18 @@ public class ReminderJob extends AbstractJob {
setRss(feed);
}
}
+
+ public void checkHealth() {
+ log.trace("ReminderJob.checkHealth");
+ boolean dbOk = false;
+ try {
+ cfgDao.count();
+ dbOk = true;
+ } catch (Exception e) {
+ log.error("DB seems to be down");
+ }
+ Health.INSTANCE.setInited(isInitComplete())
+ .setInstalled(CryptProvider.get() != null)
+ .setDbOk(dbOk);
+ }
}
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
index 816fb3f..ad36b29 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
@@ -90,6 +90,10 @@
p:targetObject-ref="reminderJob" p:targetMethod="loadRss" p:concurrent="false" />
<bean id="triggerLoadRss" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"
p:jobDetail-ref="loadRssJobDetail" p:startDelay="5000" p:repeatInterval="600000"/>
+ <bean id="checkHealthJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
+ p:targetObject-ref="reminderJob" p:targetMethod="checkHealth" p:concurrent="false" />
+ <bean id="triggerCheckHealth" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"
+ p:jobDetail-ref="checkHealthJobDetail" p:startDelay="5000" p:repeatInterval="15000"/>
<!-- Mail related jobs -->
<bean id="resetSendingMailStatus" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
@@ -114,6 +118,7 @@
<ref bean="triggerResetSendingMailStatus" />
<ref bean="triggerSendMails" />
<ref bean="triggerLoadRss" />
+ <ref bean="triggerCheckHealth" />
</list>
</property>
</bean>
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/InfoWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/InfoWebService.java
index 7f4c5c7..4f769c2 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/InfoWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/InfoWebService.java
@@ -28,6 +28,7 @@ import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.apache.cxf.feature.Features;
+import org.apache.openmeetings.db.dto.basic.Health;
import org.apache.openmeetings.db.dto.basic.Info;
import org.springframework.stereotype.Service;
@@ -55,4 +56,16 @@ public class InfoWebService {
public Info getVersion() {
return new Info();
}
+
+ /**
+ * Method to get health report for this OpenMeetings instance
+ *
+ * @return - health report
+ */
+ @WebMethod
+ @GET
+ @Path("/health")
+ public Health getHealth() {
+ return Health.INSTANCE;
+ }
}