summaryrefslogtreecommitdiffstats
path: root/container-core
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@vespa.ai>2024-01-03 15:11:51 +0100
committerBjørn Christian Seime <bjorncs@vespa.ai>2024-01-03 15:11:51 +0100
commit6de274a61b95a228f8c6c15461e19516afa93069 (patch)
tree90bed94eea04ddd6012873f751cd2c93f5d09075 /container-core
parent196a1b79bac9727e755b41897faef63a69c9a530 (diff)
Add config to disable metric reporter
Diffstat (limited to 'container-core')
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java4
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ResponseMetricAggregator.java10
-rw-r--r--container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.server.def3
3 files changed, 11 insertions, 6 deletions
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java
index 1747541bef5..618c58e31c5 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java
@@ -9,7 +9,6 @@ import com.yahoo.jdisc.AbstractResource;
import com.yahoo.jdisc.Metric;
import com.yahoo.jdisc.http.ConnectorConfig;
import com.yahoo.jdisc.http.ServerConfig;
-import com.yahoo.jdisc.service.AbstractServerProvider;
import com.yahoo.jdisc.service.CurrentContainer;
import com.yahoo.jdisc.service.ServerProvider;
import org.eclipse.jetty.http.HttpField;
@@ -41,7 +40,6 @@ import java.util.Arrays;
import java.util.Deque;
import java.util.List;
import java.util.concurrent.ConcurrentLinkedDeque;
-import java.util.function.Supplier;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
@@ -174,7 +172,7 @@ public class JettyHttpServer extends AbstractResource implements ServerProvider
public void start() {
try {
server.start();
- metricsReporter.start();
+ if (config.metric().reporterEnabled()) metricsReporter.start();
logEffectiveSslConfiguration();
} catch (final Exception e) {
if (e instanceof IOException && e.getCause() instanceof BindException) {
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ResponseMetricAggregator.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ResponseMetricAggregator.java
index 36ca1a63753..0880e33d41a 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ResponseMetricAggregator.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ResponseMetricAggregator.java
@@ -37,19 +37,20 @@ class ResponseMetricAggregator extends AbstractLifeCycle implements HttpChannel.
private final List<String> monitoringHandlerPaths;
private final List<String> searchHandlerPaths;
private final Set<String> ignoredUserAgents;
+ private final boolean reporterEnabled;
private final ConcurrentMap<StatusCodeMetric, LongAdder> statistics = new ConcurrentHashMap<>();
ResponseMetricAggregator(ServerConfig.Metric cfg) {
- this(cfg.monitoringHandlerPaths(), cfg.searchHandlerPaths(), cfg.ignoredUserAgents());
+ this(cfg.monitoringHandlerPaths(), cfg.searchHandlerPaths(), cfg.ignoredUserAgents(), cfg.reporterEnabled());
}
ResponseMetricAggregator(List<String> monitoringHandlerPaths, List<String> searchHandlerPaths,
- Collection<String> ignoredUserAgents) {
+ Collection<String> ignoredUserAgents, boolean reporterEnabled) {
this.monitoringHandlerPaths = monitoringHandlerPaths;
this.searchHandlerPaths = searchHandlerPaths;
this.ignoredUserAgents = Set.copyOf(ignoredUserAgents);
-
+ this.reporterEnabled = reporterEnabled;
}
static ResponseMetricAggregator getBean(JettyHttpServer server) { return getBean(server.server()); }
@@ -67,12 +68,15 @@ class ResponseMetricAggregator extends AbstractLifeCycle implements HttpChannel.
}
List<StatisticsEntry> takeStatistics() {
+ if (reporterEnabled)
+ throw new IllegalStateException("Cannot take consistent snapshot while reporter is enabled");
var ret = new ArrayList<StatisticsEntry>();
consume((metric, value) -> ret.add(new StatisticsEntry(metric, value)));
return ret;
}
void reportSnapshot(Metric metricAggregator) {
+ if (!reporterEnabled) throw new IllegalStateException("Reporter is not enabled");
consume((metric, value) -> {
Metric.Context ctx = metricAggregator.createContext(metric.dimensions.asMap());
metricAggregator.add(metric.name, value, ctx);
diff --git a/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.server.def b/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.server.def
index b43db0c5287..dd4d138b8c1 100644
--- a/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.server.def
+++ b/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.server.def
@@ -52,5 +52,8 @@ metric.searchHandlerPaths[] string
# User-agent names to ignore wrt statistics (crawlers etc)
metric.ignoredUserAgents[] string
+# Whether to enable scheduled metric reporter. Disabled for unit testing to stop metric counters from being reset.
+metric.reporterEnabled bool default = true
+
# Whether to enable jdisc connection log
connectionLog.enabled bool default=false