You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2022/10/23 09:27:42 UTC
[camel] 03/05: CAMEL-18639: camel-health - Add detail for last time there was a failure
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 0a542f7daae3dabe4a11034ecaf2a0391fa5077d
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sun Oct 23 11:00:44 2022 +0200
CAMEL-18639: camel-health - Add detail for last time there was a failure
---
.../main/java/org/apache/camel/health/HealthCheck.java | 3 +++
.../apache/camel/impl/health/AbstractHealthCheck.java | 16 ++++++++++++++++
2 files changed, 19 insertions(+)
diff --git a/core/camel-api/src/main/java/org/apache/camel/health/HealthCheck.java b/core/camel-api/src/main/java/org/apache/camel/health/HealthCheck.java
index b2372468f51..e02a4c402f2 100644
--- a/core/camel-api/src/main/java/org/apache/camel/health/HealthCheck.java
+++ b/core/camel-api/src/main/java/org/apache/camel/health/HealthCheck.java
@@ -35,11 +35,14 @@ public interface HealthCheck extends HasGroup, HasId, Ordered {
String CHECK_ENABLED = "check.enabled";
String INVOCATION_COUNT = "invocation.count";
String INVOCATION_TIME = "invocation.time";
+ @Deprecated
String INVOCATION_ATTEMPT_TIME = "invocation.attempt.time";
String FAILURE_COUNT = "failure.count";
+ String FAILURE_TIME = "failure.time";
String ENDPOINT_URI = "endpoint.uri";
String FAILURE_ERROR_COUNT = "failure.error.count";
String SUCCESS_COUNT = "success.count";
+ String SUCCESS_TIME = "success.time";
String HTTP_RESPONSE_CODE = "http.response.code";
/**
* Use ENDPOINT_URI
diff --git a/core/camel-health/src/main/java/org/apache/camel/impl/health/AbstractHealthCheck.java b/core/camel-health/src/main/java/org/apache/camel/impl/health/AbstractHealthCheck.java
index d5d218d18c8..a40322ec5aa 100644
--- a/core/camel-health/src/main/java/org/apache/camel/impl/health/AbstractHealthCheck.java
+++ b/core/camel-health/src/main/java/org/apache/camel/impl/health/AbstractHealthCheck.java
@@ -152,7 +152,9 @@ public abstract class AbstractHealthCheck implements HealthCheck, CamelContextAw
// Extract relevant information from meta data.
int invocationCount = (Integer) meta.getOrDefault(INVOCATION_COUNT, 0);
int failureCount = (Integer) meta.getOrDefault(FAILURE_COUNT, 0);
+ String failureTime = (String) meta.get(FAILURE_TIME);
int successCount = (Integer) meta.getOrDefault(SUCCESS_COUNT, 0);
+ String successTime = (String) meta.get(SUCCESS_TIME);
String invocationTime = ZonedDateTime.now().format(DateTimeFormatter.ISO_ZONED_DATE_TIME);
@@ -178,23 +180,37 @@ public abstract class AbstractHealthCheck implements HealthCheck, CamelContextAw
// reset success since it failed
successCount = 0;
failureCount++;
+ failureTime = invocationTime;
} else if (builder.state() == State.UP) {
// reset failure since it ok
failureCount = 0;
successCount++;
+ successTime = invocationTime;
}
meta.put(INVOCATION_TIME, invocationTime);
meta.put(INVOCATION_COUNT, ++invocationCount);
meta.put(FAILURE_COUNT, failureCount);
+ if (failureTime != null) {
+ meta.put(FAILURE_TIME, failureTime);
+ }
meta.put(SUCCESS_COUNT, successCount);
+ if (successTime != null) {
+ meta.put(SUCCESS_TIME, successTime);
+ }
// Copy some meta-data bits to the response attributes so the
// response caches the health-check state at the time of the invocation.
builder.detail(INVOCATION_TIME, meta.get(INVOCATION_TIME));
builder.detail(INVOCATION_COUNT, meta.get(INVOCATION_COUNT));
builder.detail(FAILURE_COUNT, meta.get(FAILURE_COUNT));
+ if (meta.containsKey(FAILURE_TIME)) {
+ builder.detail(FAILURE_TIME, meta.get(FAILURE_TIME));
+ }
builder.detail(SUCCESS_COUNT, meta.get(SUCCESS_COUNT));
+ if (meta.containsKey(SUCCESS_TIME)) {
+ builder.detail(SUCCESS_TIME, meta.get(SUCCESS_TIME));
+ }
return builder;
}