aboutsummaryrefslogtreecommitdiffstats
path: root/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/health
diff options
context:
space:
mode:
Diffstat (limited to 'apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/health')
-rw-r--r--apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/health/ApiRouteHealthCheck.java71
-rw-r--r--apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/health/ConsulLinkHealthCheck.java240
-rw-r--r--apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/health/OpenRestyHealthCheck.java67
-rw-r--r--apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/health/RedisHealthCheck.java308
4 files changed, 327 insertions, 359 deletions
diff --git a/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/health/ApiRouteHealthCheck.java b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/health/ApiRouteHealthCheck.java
index 7edf882..6868f99 100644
--- a/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/health/ApiRouteHealthCheck.java
+++ b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/health/ApiRouteHealthCheck.java
@@ -1,33 +1,29 @@
/*******************************************************************************
* Copyright 2016-2017 ZTE, Inc. and others.
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
******************************************************************************/
/**
-* Copyright (C) 2016 ZTE, Inc. and others. All rights reserved. (ZTE)
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
+ * Copyright (C) 2016 ZTE, Inc. and others. All rights reserved. (ZTE)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
package org.onap.msb.apiroute.health;
import org.onap.msb.apiroute.api.DiscoverInfo;
@@ -40,26 +36,23 @@ import com.codahale.metrics.health.HealthCheck;
public class ApiRouteHealthCheck extends HealthCheck {
- public ApiRouteHealthCheck() {
- }
+ public ApiRouteHealthCheck() {}
@Override
protected Result check() throws Exception {
- DiscoverInfo discoverInfo=ConfigUtil.getInstance().getDiscoverInfo();
-
- String checkUrl =
- (new StringBuilder().append("http://").append(discoverInfo.toString())
- .append(RouteUtil.MSB_CHECK_URL)).toString();
+ DiscoverInfo discoverInfo = ConfigUtil.getInstance().getDiscoverInfo();
+
+ String checkUrl = (new StringBuilder().append("http://").append(discoverInfo.toString())
+ .append(RouteUtil.MSB_CHECK_URL)).toString();
+
+ int resultStatus = HttpClientUtil.httpGetStatus(checkUrl);
+
+ if (resultStatus == 200) {
+ return Result.healthy();
+ } else {
+ return Result.unhealthy("check consul fail:[status]" + resultStatus);
+ }
- int resultStatus = HttpClientUtil.httpGetStatus(checkUrl);
-
- if(resultStatus==200){
- return Result.healthy();
- }
- else{
- return Result.unhealthy("check consul fail:[status]"+resultStatus);
- }
-
}
}
diff --git a/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/health/ConsulLinkHealthCheck.java b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/health/ConsulLinkHealthCheck.java
index 40d169a..545e4c8 100644
--- a/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/health/ConsulLinkHealthCheck.java
+++ b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/health/ConsulLinkHealthCheck.java
@@ -1,23 +1,19 @@
/*******************************************************************************
* Copyright 2016-2017 ZTE, Inc. and others.
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
******************************************************************************/
package org.onap.msb.apiroute.health;
import org.apache.commons.lang3.StringUtils;
-import org.onap.msb.apiroute.ApiRouteApp;
-import org.onap.msb.apiroute.wrapper.InitRouteServiceWrapper;
import org.onap.msb.apiroute.wrapper.util.ConfigUtil;
import org.onap.msb.apiroute.wrapper.util.HttpClientUtil;
import org.onap.msb.apiroute.wrapper.util.HttpGetResult;
@@ -28,120 +24,110 @@ import com.codahale.metrics.health.HealthCheck;
public class ConsulLinkHealthCheck extends HealthCheck implements Runnable {
- private static final Logger LOGGER = LoggerFactory
- .getLogger(ConsulLinkHealthCheck.class);
-
- private final static String CONSUL_IP_ENV = ConfigUtil.getInstance().getConsul_ip();
-
- private static int failedLoopCheckNum = 12;
- private static int failedTimer = 5 * 1000;
-
- private static int normalTimer = 20 * 1000;
- private static Result result = Result.healthy();
-
- private String CHECK_IP = "127.0.0.1";
- private String CHECK_PORT = "8500";
- private String CHECK_URL = "http://" + CHECK_IP + ":" + CHECK_PORT
- + "/v1/status/leader";
-
- public static Result getResult() {
- return result;
- }
-
- @Override
- protected Result check() {
- // TODO Auto-generated method stub
-
- if (!StringUtils.isBlank(CONSUL_IP_ENV)) {
- CHECK_IP = CONSUL_IP_ENV;
- CHECK_URL = "http://" + CHECK_IP + ":" + CHECK_PORT
- + "/v1/status/leader";
-
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("check consul URL:" + CHECK_URL);
- }
-
- try {
-
- HttpGetResult result = HttpClientUtil
- .httpGetStatusAndBody(CHECK_URL);
-
- //response format:"127.0.0.1:8300"
- if (result.getStatusCode() == 200 && result.getBody() != null
- && result.getBody().contains(":8300")) {
- return Result.healthy();
- } else {
- return Result.unhealthy("check consul link " + CHECK_URL
- + " fail:" + result.getStatusCode()+":"+result.getBody());
- }
-
- } catch (Exception e) {
- LOGGER.warn(
- "ConsulLinkHealthCheck:" + CHECK_URL + " execption", e);
- return Result.unhealthy("check consul link " + CHECK_URL
- + " exception:{}");
- }
-
- }
-
- return Result.healthy();
- }
-
- @Override
- public void run() {
- // TODO Auto-generated method stub
- while (true) {
-
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("consul link check starttime:"
- + System.currentTimeMillis());
- }
-
- result = checkWithPolicy();
-
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("consul link check result:" + result.isHealthy()
- + " message:" + result.getMessage());
-
- LOGGER.debug("consul link check endtime:"
- + System.currentTimeMillis());
- }
-
- try {
- Thread.sleep(normalTimer);
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- LOGGER.warn("loop check consul,thread sleep excepiton", e);
- }
- }
- }
-
- private Result checkWithPolicy() {
- int failedNum = 0;
- Result temp = Result.healthy();
-
- do {
- // check again
- temp = check();
-
- // healthy break;
- if (temp.isHealthy()) {
- break;
- }
-
- // unhealthy go on
- failedNum++;
-
- try {
- Thread.sleep(failedTimer);
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- LOGGER.warn("loop check consul,thread sleep excepiton", e);
- }
-
- } while (failedNum <= failedLoopCheckNum);
-
- return temp;
- }
-
+ private static final Logger LOGGER = LoggerFactory.getLogger(ConsulLinkHealthCheck.class);
+
+ private final static String CONSUL_IP_ENV = ConfigUtil.getInstance().getConsul_ip();
+
+ private static int failedLoopCheckNum = 12;
+ private static int failedTimer = 5 * 1000;
+
+ private static int normalTimer = 20 * 1000;
+ private static Result result = Result.healthy();
+
+ private String CHECK_IP = "127.0.0.1";
+ private String CHECK_PORT = "8500";
+ private String CHECK_URL = "http://" + CHECK_IP + ":" + CHECK_PORT + "/v1/status/leader";
+
+ public static Result getResult() {
+ return result;
+ }
+
+ @Override
+ protected Result check() {
+ // TODO Auto-generated method stub
+
+ if (!StringUtils.isBlank(CONSUL_IP_ENV)) {
+ CHECK_IP = CONSUL_IP_ENV;
+ CHECK_URL = "http://" + CHECK_IP + ":" + CHECK_PORT + "/v1/status/leader";
+
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug("check consul URL:" + CHECK_URL);
+ }
+
+ try {
+
+ HttpGetResult result = HttpClientUtil.httpGetStatusAndBody(CHECK_URL);
+
+ // response format:"127.0.0.1:8300"
+ if (result.getStatusCode() == 200 && result.getBody() != null && result.getBody().contains(":8300")) {
+ return Result.healthy();
+ } else {
+ return Result.unhealthy("check consul link " + CHECK_URL + " fail:" + result.getStatusCode() + ":"
+ + result.getBody());
+ }
+
+ } catch (Exception e) {
+ LOGGER.warn("ConsulLinkHealthCheck:" + CHECK_URL + " execption", e);
+ return Result.unhealthy("check consul link " + CHECK_URL + " exception:{}");
+ }
+
+ }
+
+ return Result.healthy();
+ }
+
+ @Override
+ public void run() {
+ // TODO Auto-generated method stub
+ while (true) {
+
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug("consul link check starttime:" + System.currentTimeMillis());
+ }
+
+ result = checkWithPolicy();
+
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug("consul link check result:" + result.isHealthy() + " message:" + result.getMessage());
+
+ LOGGER.debug("consul link check endtime:" + System.currentTimeMillis());
+ }
+
+ try {
+ Thread.sleep(normalTimer);
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ LOGGER.warn("loop check consul,thread sleep excepiton", e);
+ }
+ }
+ }
+
+ private Result checkWithPolicy() {
+ int failedNum = 0;
+ Result temp = Result.healthy();
+
+ do {
+ // check again
+ temp = check();
+
+ // healthy break;
+ if (temp.isHealthy()) {
+ break;
+ }
+
+ // unhealthy go on
+ failedNum++;
+
+ try {
+ Thread.sleep(failedTimer);
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ LOGGER.warn("loop check consul,thread sleep excepiton", e);
+ }
+
+ } while (failedNum <= failedLoopCheckNum);
+
+ return temp;
+ }
+
}
diff --git a/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/health/OpenRestyHealthCheck.java b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/health/OpenRestyHealthCheck.java
index 1f5a9e2..be3266a 100644
--- a/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/health/OpenRestyHealthCheck.java
+++ b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/health/OpenRestyHealthCheck.java
@@ -1,17 +1,15 @@
/*******************************************************************************
* Copyright 2016-2017 ZTE, Inc. and others.
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
******************************************************************************/
package org.onap.msb.apiroute.health;
@@ -23,32 +21,29 @@ import org.slf4j.LoggerFactory;
import com.codahale.metrics.health.HealthCheck;
public class OpenRestyHealthCheck extends HealthCheck {
- private static final Logger LOGGER = LoggerFactory
- .getLogger(OpenRestyHealthCheck.class);
- private String CHECK_IP="127.0.0.1";
- private String CHECK_PORT="80";
- private String CHECK_URL = "http://"+CHECK_IP+":"+CHECK_PORT+"/api/microservices/v1/apiRoute/discoverInfo";
-
- @Override
- protected Result check() throws Exception {
- // TODO Auto-generated method stub
-
- if(!StringUtils.isBlank(System.getenv("HTTP_OVERWRITE_PORT")))
- {
- CHECK_PORT=System.getenv("HTTP_OVERWRITE_PORT");
- CHECK_URL = "http://"+CHECK_IP+":"+CHECK_PORT+"/api/microservices/v1/apiRoute/discoverInfo";
- LOGGER.info("check openresty URL:"+CHECK_URL);
- }
-
- int resultStatus = HttpClientUtil.httpGetStatus(CHECK_URL);
-
- if (resultStatus == 200) {
- return Result.healthy();
- } else {
- return Result
- .unhealthy("check openresty fail:" + resultStatus);
- }
-
- }
+ private static final Logger LOGGER = LoggerFactory.getLogger(OpenRestyHealthCheck.class);
+ private String CHECK_IP = "127.0.0.1";
+ private String CHECK_PORT = "80";
+ private String CHECK_URL = "http://" + CHECK_IP + ":" + CHECK_PORT + "/api/microservices/v1/apiRoute/discoverInfo";
+
+ @Override
+ protected Result check() throws Exception {
+ // TODO Auto-generated method stub
+
+ if (!StringUtils.isBlank(System.getenv("HTTP_OVERWRITE_PORT"))) {
+ CHECK_PORT = System.getenv("HTTP_OVERWRITE_PORT");
+ CHECK_URL = "http://" + CHECK_IP + ":" + CHECK_PORT + "/api/microservices/v1/apiRoute/discoverInfo";
+ LOGGER.info("check openresty URL:" + CHECK_URL);
+ }
+
+ int resultStatus = HttpClientUtil.httpGetStatus(CHECK_URL);
+
+ if (resultStatus == 200) {
+ return Result.healthy();
+ } else {
+ return Result.unhealthy("check openresty fail:" + resultStatus);
+ }
+
+ }
}
diff --git a/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/health/RedisHealthCheck.java b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/health/RedisHealthCheck.java
index 48bfa48..2f2ec4c 100644
--- a/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/health/RedisHealthCheck.java
+++ b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/health/RedisHealthCheck.java
@@ -1,17 +1,15 @@
/*******************************************************************************
* Copyright 2016-2017 ZTE, Inc. and others.
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
******************************************************************************/
package org.onap.msb.apiroute.health;
@@ -21,155 +19,151 @@ import org.onap.msb.apiroute.wrapper.util.JedisUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import redis.clients.jedis.Jedis;
-
import com.codahale.metrics.health.HealthCheck;
+import redis.clients.jedis.Jedis;
+
public class RedisHealthCheck extends HealthCheck implements Runnable {
- private static final Logger LOGGER = LoggerFactory
- .getLogger(RedisHealthCheck.class);
-
- public static boolean writeCheckFlag = true;
- private static Result result = Result.healthy();
-
- private static int failedLoopCheckNum = 12;
- private static int failedTimer = 5 * 1000;
-
- private static int normalTimer = 20 * 1000;
-
- public static Result getResult() {
- return result;
- }
-
- @Override
- protected Result check() {
-
- // check write
- if (writeCheckFlag) {
- Result writeCheckResult = checkWrite();
- if (writeCheckResult.isHealthy()) {
- writeCheckFlag = false;
- }
-
- // write failed
- if (!writeCheckResult.isHealthy()) {
- return writeCheckResult;
- }
- }
-
- // check read
- Result readCheckResult = checkRead();
-
- // read failed
- if (!readCheckResult.isHealthy()) {
- return readCheckResult;
- }
-
- return Result.healthy();
- }
-
- private Result checkRead() {
- Jedis jedisHandle = null;
-
- Result healthRst = Result.healthy();
- try {
-
- jedisHandle = JedisUtil.borrowJedisInstance();
- jedisHandle.get("healthchek:checktime");
-
- } catch (Exception e) {
- LOGGER.warn("RedisHealthCheck exception", e);
- healthRst = Result.unhealthy(e);
- } finally {
- JedisUtil.returnJedisInstance(jedisHandle);
- }
-
- return healthRst;
- }
-
- private Result checkWrite() {
- Jedis jedisHandle = null;
-
- Result healthRst = Result.healthy();
- try {
-
- long currentTime = System.currentTimeMillis();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String date = sdf.format(currentTime);
-
- jedisHandle = JedisUtil.borrowJedisInstance();
- String statusCode = jedisHandle.set("healthchek:checktime", date);
-
- if (statusCode != null && statusCode.equals("OK")) {
- healthRst = Result.healthy("check redis:" + statusCode);
- } else {
- healthRst = Result.unhealthy("check redis:" + statusCode);
- }
-
- } catch (Exception e) {
- LOGGER.warn("RedisHealthCheck exception", e);
- healthRst = Result.unhealthy(e);
- } finally {
- JedisUtil.returnJedisInstance(jedisHandle);
- }
-
- return healthRst;
- }
-
- @Override
- public void run() {
- // TODO Auto-generated method stub
- while (true) {
-
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("redis check starttime:"
- + System.currentTimeMillis());
- }
-
- result = checkWithPolicy();
-
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("redis check result:" + result.isHealthy()
- + " message:" + result.getMessage());
-
- LOGGER.debug("redis check endtime:"
- + System.currentTimeMillis());
- }
-
- try {
- Thread.sleep(normalTimer);
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- LOGGER.warn("loop check redis,thread sleep excepiton", e);
- }
- }
- }
-
- private Result checkWithPolicy() {
- int failedNum = 0;
- Result temp = Result.healthy();
-
- do {
- // check again
- temp = check();
-
- // healthy break;
- if (temp.isHealthy()) {
- break;
- }
-
- // unhealthy go on
- failedNum++;
-
- try {
- Thread.sleep(failedTimer);
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- LOGGER.warn("loop check redis,thread sleep excepiton", e);
- }
-
- } while (failedNum <= failedLoopCheckNum);
-
- return temp;
- }
+ private static final Logger LOGGER = LoggerFactory.getLogger(RedisHealthCheck.class);
+
+ public static boolean writeCheckFlag = true;
+ private static Result result = Result.healthy();
+
+ private static int failedLoopCheckNum = 12;
+ private static int failedTimer = 5 * 1000;
+
+ private static int normalTimer = 20 * 1000;
+
+ public static Result getResult() {
+ return result;
+ }
+
+ @Override
+ protected Result check() {
+
+ // check write
+ if (writeCheckFlag) {
+ Result writeCheckResult = checkWrite();
+ if (writeCheckResult.isHealthy()) {
+ writeCheckFlag = false;
+ }
+
+ // write failed
+ if (!writeCheckResult.isHealthy()) {
+ return writeCheckResult;
+ }
+ }
+
+ // check read
+ Result readCheckResult = checkRead();
+
+ // read failed
+ if (!readCheckResult.isHealthy()) {
+ return readCheckResult;
+ }
+
+ return Result.healthy();
+ }
+
+ private Result checkRead() {
+ Jedis jedisHandle = null;
+
+ Result healthRst = Result.healthy();
+ try {
+
+ jedisHandle = JedisUtil.borrowJedisInstance();
+ jedisHandle.get("healthchek:checktime");
+
+ } catch (Exception e) {
+ LOGGER.warn("RedisHealthCheck exception", e);
+ healthRst = Result.unhealthy(e);
+ } finally {
+ JedisUtil.returnJedisInstance(jedisHandle);
+ }
+
+ return healthRst;
+ }
+
+ private Result checkWrite() {
+ Jedis jedisHandle = null;
+
+ Result healthRst = Result.healthy();
+ try {
+
+ long currentTime = System.currentTimeMillis();
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ String date = sdf.format(currentTime);
+
+ jedisHandle = JedisUtil.borrowJedisInstance();
+ String statusCode = jedisHandle.set("healthchek:checktime", date);
+
+ if (statusCode != null && statusCode.equals("OK")) {
+ healthRst = Result.healthy("check redis:" + statusCode);
+ } else {
+ healthRst = Result.unhealthy("check redis:" + statusCode);
+ }
+
+ } catch (Exception e) {
+ LOGGER.warn("RedisHealthCheck exception", e);
+ healthRst = Result.unhealthy(e);
+ } finally {
+ JedisUtil.returnJedisInstance(jedisHandle);
+ }
+
+ return healthRst;
+ }
+
+ @Override
+ public void run() {
+ // TODO Auto-generated method stub
+ while (true) {
+
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug("redis check starttime:" + System.currentTimeMillis());
+ }
+
+ result = checkWithPolicy();
+
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug("redis check result:" + result.isHealthy() + " message:" + result.getMessage());
+
+ LOGGER.debug("redis check endtime:" + System.currentTimeMillis());
+ }
+
+ try {
+ Thread.sleep(normalTimer);
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ LOGGER.warn("loop check redis,thread sleep excepiton", e);
+ }
+ }
+ }
+
+ private Result checkWithPolicy() {
+ int failedNum = 0;
+ Result temp = Result.healthy();
+
+ do {
+ // check again
+ temp = check();
+
+ // healthy break;
+ if (temp.isHealthy()) {
+ break;
+ }
+
+ // unhealthy go on
+ failedNum++;
+
+ try {
+ Thread.sleep(failedTimer);
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ LOGGER.warn("loop check redis,thread sleep excepiton", e);
+ }
+
+ } while (failedNum <= failedLoopCheckNum);
+
+ return temp;
+ }
}