From f1abca3a4527c6d1bbf5707ad214e0ba0507f152 Mon Sep 17 00:00:00 2001 From: hsiegeln <37154749+hsiegeln@users.noreply.github.com> Date: Mon, 20 Apr 2026 07:36:43 +0200 Subject: [PATCH] =?UTF-8?q?refactor(alerting):=20rename=20P95=5FLATENCY=5F?= =?UTF-8?q?MS=20=E2=86=92=20AVG=5FDURATION=5FMS=20to=20match=20what=20stat?= =?UTF-8?q?s=5F1m=5Froute=20exposes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The evaluator mapped P95_LATENCY_MS to ExecutionStats.avgDurationMs because stats_1m_route has no p95 column. Exposing the old name implied p95 semantics operators did not get. Rename to AVG_DURATION_MS makes the contract honest. Updated RouteMetric enum (with javadoc), evaluator switch, and admin guide. Co-Authored-By: Claude Sonnet 4.6 --- .../server/app/alerting/eval/RouteMetricEvaluator.java | 3 +-- .../com/cameleer/server/core/alerting/RouteMetric.java | 9 ++++++++- docs/alerting.md | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/cameleer-server-app/src/main/java/com/cameleer/server/app/alerting/eval/RouteMetricEvaluator.java b/cameleer-server-app/src/main/java/com/cameleer/server/app/alerting/eval/RouteMetricEvaluator.java index f04f333d..09eacd14 100644 --- a/cameleer-server-app/src/main/java/com/cameleer/server/app/alerting/eval/RouteMetricEvaluator.java +++ b/cameleer-server-app/src/main/java/com/cameleer/server/app/alerting/eval/RouteMetricEvaluator.java @@ -48,8 +48,7 @@ public class RouteMetricEvaluator implements ConditionEvaluator errorRate(stats); - // ExecutionStats has no p95 field; avgDurationMs is the closest available proxy - case P95_LATENCY_MS -> (double) stats.avgDurationMs(); + case AVG_DURATION_MS -> (double) stats.avgDurationMs(); case P99_LATENCY_MS -> (double) stats.p99LatencyMs(); case THROUGHPUT -> (double) stats.totalCount(); case ERROR_COUNT -> (double) stats.failedCount(); diff --git a/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/RouteMetric.java b/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/RouteMetric.java index 336d8019..ff1154d6 100644 --- a/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/RouteMetric.java +++ b/cameleer-server-core/src/main/java/com/cameleer/server/core/alerting/RouteMetric.java @@ -1,3 +1,10 @@ package com.cameleer.server.core.alerting; -public enum RouteMetric { ERROR_RATE, P95_LATENCY_MS, P99_LATENCY_MS, THROUGHPUT, ERROR_COUNT } +public enum RouteMetric { + ERROR_RATE, + /** Average execution duration — maps to stats_1m_route.avgDurationMs. */ + AVG_DURATION_MS, + P99_LATENCY_MS, + THROUGHPUT, + ERROR_COUNT +} diff --git a/docs/alerting.md b/docs/alerting.md index 82474f00..68783a8d 100644 --- a/docs/alerting.md +++ b/docs/alerting.md @@ -31,7 +31,7 @@ Fires when a computed route metric crosses a threshold over a rolling window. } ``` -Available metrics: `ERROR_RATE`, `THROUGHPUT`, `MEAN_PROCESSING_MS`, `P95_PROCESSING_MS`. +Available metrics: `ERROR_RATE`, `THROUGHPUT`, `AVG_DURATION_MS`, `P99_LATENCY_MS`, `ERROR_COUNT`. Comparators: `GT`, `GTE`, `LT`, `LTE`, `EQ`. ### EXCHANGE_MATCH