diff options
Diffstat (limited to 'container-core')
3 files changed, 14 insertions, 4 deletions
diff --git a/container-core/abi-spec.json b/container-core/abi-spec.json index 2b5e4386e94..f29c4c2a8f7 100644 --- a/container-core/abi-spec.json +++ b/container-core/abi-spec.json @@ -1261,10 +1261,13 @@ "public com.yahoo.jdisc.http.ConnectorConfig$ServerName$Builder fallback(java.lang.String)", "public com.yahoo.jdisc.http.ConnectorConfig$ServerName$Builder allowed(java.lang.String)", "public com.yahoo.jdisc.http.ConnectorConfig$ServerName$Builder allowed(java.util.Collection)", + "public com.yahoo.jdisc.http.ConnectorConfig$ServerName$Builder known(java.lang.String)", + "public com.yahoo.jdisc.http.ConnectorConfig$ServerName$Builder known(java.util.Collection)", "public com.yahoo.jdisc.http.ConnectorConfig$ServerName build()" ], "fields" : [ - "public java.util.List allowed" + "public java.util.List allowed", + "public java.util.List known" ] }, "com.yahoo.jdisc.http.ConnectorConfig$ServerName" : { @@ -1278,7 +1281,9 @@ "public void <init>(com.yahoo.jdisc.http.ConnectorConfig$ServerName$Builder)", "public java.lang.String fallback()", "public java.util.List allowed()", - "public java.lang.String allowed(int)" + "public java.lang.String allowed(int)", + "public java.util.List known()", + "public java.lang.String known(int)" ], "fields" : [ ] }, diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscServerConnector.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscServerConnector.java index e699b9f200c..983adec034d 100644 --- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscServerConnector.java +++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscServerConnector.java @@ -11,8 +11,8 @@ import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; import java.util.HashMap; +import java.util.List; import java.util.Map; -import java.util.Optional; /** * @author bjorncs @@ -26,6 +26,7 @@ class JDiscServerConnector extends ServerConnector { private final Metric metric; private final String connectorName; private final int listenPort; + private final List<String> knownServerNames; JDiscServerConnector(ConnectorConfig config, Metric metric, Server server, JettyConnectionLogger connectionLogger, ConnectionMetricAggregator connectionMetricAggregator, ConnectionFactory... factories) { @@ -35,6 +36,7 @@ class JDiscServerConnector extends ServerConnector { this.connectorName = config.name(); this.listenPort = config.listenPort(); this.metricCtx = metric.createContext(createConnectorDimensions(listenPort, connectorName, 0)); + this.knownServerNames = List.copyOf(config.serverName().known()); this.statistics = new ConnectionStatistics(); setAcceptedTcpNoDelay(config.tcpNoDelay()); @@ -69,7 +71,7 @@ class JDiscServerConnector extends ServerConnector { dimensions.put(MetricDefinitions.SCHEME_DIMENSION, scheme); dimensions.put(MetricDefinitions.CLIENT_AUTHENTICATED_DIMENSION, Boolean.toString(clientAuthenticated)); dimensions.put(MetricDefinitions.PROTOCOL_DIMENSION, request.getProtocol()); - String serverName = Optional.ofNullable(request.getServerName()).orElse("unknown"); + String serverName = knownServerNames.stream().filter(name -> name.equalsIgnoreCase(request.getServerName())).findFirst().orElse("unknown"); dimensions.put(MetricDefinitions.REQUEST_SERVER_NAME_DIMENSION, serverName); dimensions.putAll(extraDimensions); return metric.createContext(dimensions); diff --git a/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.connector.def b/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.connector.def index c1c0944d7eb..b4a513e0de8 100644 --- a/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.connector.def +++ b/container-core/src/main/resources/configdefinitions/jdisc.http.jdisc.http.connector.def @@ -139,6 +139,9 @@ serverName.fallback string default="" # The list of accepted server names. Empty list to accept any. Elements follows format of 'serverName.default'. serverName.allowed[] string +# The list of known server names. Used for e.g matching metric dimensions. +serverName.known[] string + # HTTP request headers that contain remote address accessLog.remoteAddressHeaders[] string |