diff options
author | Arne Juul <arnej@yahoo-inc.com> | 2019-08-05 07:48:45 +0000 |
---|---|---|
committer | Arne Juul <arnej@yahoo-inc.com> | 2019-08-06 06:43:02 +0000 |
commit | 211cb30e6a61fa5aa0a43ad8e09239492e9cab18 (patch) | |
tree | 7bc2d8942d206b6daebc0ed47e5f9b8e3a6b4257 /config-model/src/main/java/com/yahoo | |
parent | 35283b454dfdaa9acbcea24274e01e65d128b7b6 (diff) |
retry: refactor requestor api
* add and switch to API for explicitly allocating network ports
* remove now-unused getPortSuffixes
* remove now-unused requiresConsecutivePorts
* remove now-unused reservePortPrepended
Diffstat (limited to 'config-model/src/main/java/com/yahoo')
18 files changed, 200 insertions, 157 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java b/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java index 06cdfa5e664..72c475fb091 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java @@ -196,16 +196,6 @@ public abstract class AbstractService extends AbstractConfigProducer<AbstractCon } /** - * Override if the services does not require consecutive port numbers. I.e. if any ports - * in addition to the baseport should be allocated from Vespa's default port range. - * - * @return true by default - */ - public boolean requiresConsecutivePorts() { - return true; - } - - /** * Gets the ports metainfo object. The service implementation * must populate this object in the constructor. */ @@ -454,14 +444,6 @@ public abstract class AbstractService extends AbstractConfigProducer<AbstractCon this.basePort = wantedPort; } - /** Temporary hack: reserve port with index 0 - * Must be done this way since the system test framework - * currently uses the first port as container http port. - */ - public void reservePortPrepended(int port, String suffix) { - ports.add(0, hostResource.ports().requireNetworkPort(port, this, suffix)); - } - public void setHostResource(HostResource hostResource) { this.hostResource = hostResource; } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/ConfigProxy.java b/config-model/src/main/java/com/yahoo/vespa/model/ConfigProxy.java index 4fe13c8bede..adb49fff9df 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/ConfigProxy.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/ConfigProxy.java @@ -30,6 +30,12 @@ public class ConfigProxy extends AbstractService { setProp("clustername", "admin"); } + @Override + public void allocatePorts(int start, PortAllocBridge from) { + if (start == 0) start = BASEPORT; + from.requirePort(start, "rpc"); + } + /** * Returns the desired base port for this service. */ @@ -47,9 +53,4 @@ public class ConfigProxy extends AbstractService { */ public int getPortCount() { return 1; } - @Override - public String[] getPortSuffixes() { - return new String[]{"rpc"}; - } - } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/ConfigSentinel.java b/config-model/src/main/java/com/yahoo/vespa/model/ConfigSentinel.java index 3f1202ccfd7..d15db6b4a55 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/ConfigSentinel.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/ConfigSentinel.java @@ -14,6 +14,8 @@ import com.yahoo.config.provision.Zone; */ public class ConfigSentinel extends AbstractService implements SentinelConfig.Producer { + static final int BASEPORT = 19097; + private final ApplicationId applicationId; private final Zone zone; @@ -32,6 +34,13 @@ public class ConfigSentinel extends AbstractService implements SentinelConfig.Pr setProp("clustername", "admin"); } + @Override + public void allocatePorts(int start, PortAllocBridge from) { + if (start == 0) start = BASEPORT; + from.requirePort(start++, "rpc"); + from.requirePort(start++, "http"); + } + /** * Returns the desired base port for this service. */ @@ -48,11 +57,6 @@ public class ConfigSentinel extends AbstractService implements SentinelConfig.Pr public int getPortCount() { return 2; } @Override - public String[] getPortSuffixes() { - return new String[]{ "rpc", "http" }; - } - - @Override public int getHealthPort() {return getRelativePort(1); } /** diff --git a/config-model/src/main/java/com/yahoo/vespa/model/HostPorts.java b/config-model/src/main/java/com/yahoo/vespa/model/HostPorts.java index 69b692e3ad9..5f55c78c1e4 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/HostPorts.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/HostPorts.java @@ -137,34 +137,9 @@ public class HostPorts { /** Allocate all ports for a service */ List<Integer> allocatePorts(NetworkPortRequestor service, int wantedPort) { - List<Integer> ports = new ArrayList<>(); - final int count = service.getPortCount(); - if (count < 1) - return ports; - - String[] suffixes = service.getPortSuffixes(); - if (suffixes.length != count) { - throw new IllegalArgumentException("service "+service+" had "+suffixes.length+" port suffixes, but port count "+count+", mismatch"); - } - - if (wantedPort > 0) { - boolean force = service.requiresWantedPort(); - if (service.requiresConsecutivePorts()) { - for (int i = 0; i < count; i++) { - ports.add(wantNetworkPort(wantedPort+i, service, suffixes[i], force)); - } - } else { - ports.add(wantNetworkPort(wantedPort, service, suffixes[0], force)); - for (int i = 1; i < count; i++) { - ports.add(allocateNetworkPort(service, suffixes[i])); - } - } - } else { - for (int i = 0; i < count; i++) { - ports.add(allocateNetworkPort(service, suffixes[i])); - } - } - return ports; + PortAllocBridge allocator = new PortAllocBridge(this, service); + service.allocatePorts(wantedPort, allocator); + return allocator.result(); } public void flushPortReservations() { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/Logd.java b/config-model/src/main/java/com/yahoo/vespa/model/Logd.java index 3c7f1ba6cfa..300f35b62d3 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/Logd.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/Logd.java @@ -14,6 +14,7 @@ public class Logd extends AbstractService implements LogdConfig.Producer { + static final int BASEPORT = 19089; /** * Creates a new Logd instance. @@ -25,6 +26,12 @@ public class Logd portsMeta.on(0).tag("http").tag("state"); } + @Override + public void allocatePorts(int start, PortAllocBridge from) { + if (start == 0) start = BASEPORT; + from.wantPort(start, "http"); + } + /** * Logd needs a state port. * @@ -32,11 +39,6 @@ public class Logd */ public int getPortCount() { return 1; } - @Override - public String[] getPortSuffixes() { - return new String[]{"http"}; - } - /** Returns the desired base port for this service. */ public int getWantedPort() { return 19089; } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/NetworkPortRequestor.java b/config-model/src/main/java/com/yahoo/vespa/model/NetworkPortRequestor.java index 96870ee30d8..f8337219f54 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/NetworkPortRequestor.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/NetworkPortRequestor.java @@ -26,6 +26,9 @@ public interface NetworkPortRequestor { */ default int getWantedPort() { return 0; } + /** allocate the ports you need */ + void allocatePorts(int start, PortAllocBridge from); + /** * Returns the number of ports needed by this service. * User-defined ports for container http servers should not be counted, as those @@ -41,18 +44,4 @@ public interface NetworkPortRequestor { * @return true if this Service requires the wanted base port. */ default boolean requiresWantedPort() { return false; } - - /** - * Override if the services does not require consecutive port numbers. I.e. if any ports - * in addition to the baseport should be allocated from Vespa's default port range. - * - * @return true by default - */ - default boolean requiresConsecutivePorts() { return true; } - - /** - * Return names for each port requested. - * The size of the returned array must be equal to getPortCount(). - */ - String[] getPortSuffixes(); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/PortAllocBridge.java b/config-model/src/main/java/com/yahoo/vespa/model/PortAllocBridge.java new file mode 100644 index 00000000000..ac518b3a7d9 --- /dev/null +++ b/config-model/src/main/java/com/yahoo/vespa/model/PortAllocBridge.java @@ -0,0 +1,48 @@ +// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +package com.yahoo.vespa.model; + +import java.util.ArrayList; +import java.util.List; + +/** + * API for allocating network ports + * This class acts as a bridge between NetworkPortRequestor and HostPorts + * for a single call to allocatePorts(), gathering the resulting port + * allocations in a list of integers. + * @author arnej + */ +public class PortAllocBridge { + + private HostPorts host; + private NetworkPortRequestor service; + private List<Integer> ports = new ArrayList<>(); + + public PortAllocBridge(HostPorts host, NetworkPortRequestor service) { + this.host = host; + this.service = service; + } + + public int requirePort(int port, String suffix) { + int got = host.requireNetworkPort(port, service, suffix); + ports.add(got); + return got; + } + + public int wantPort(int port, String suffix) { + int got = host.wantNetworkPort(port, service, suffix); + ports.add(got); + return got; + } + + public int allocatePort(String suffix) { + int got = host.allocateNetworkPort(service, suffix); + ports.add(got); + return got; + } + + public List<Integer> result() { + return ports; + } + +} diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java index e8ca03b277d..7c31da19cf8 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java @@ -3,6 +3,8 @@ package com.yahoo.vespa.model.admin; import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.vespa.model.AbstractService; +import com.yahoo.vespa.model.PortAllocBridge; + /** * Represents a Configserver. There may be one or more Configservers in a @@ -30,6 +32,21 @@ public class Configserver extends AbstractService { setProp("clustername", "admin"); } + @Override + public void allocatePorts(int start, PortAllocBridge from) { + if (requiresWantedPort()) { + from.requirePort(start++, "rpc"); + from.requirePort(start++, "http"); + } else if (start == 0) { + from.allocatePort("rpc"); + from.allocatePort("http"); + } else { + from.wantPort(start++, "rpc"); + from.wantPort(start++, "http"); + } + } + + /** * Returns the desired base port for this service. */ @@ -50,11 +67,6 @@ public class Configserver extends AbstractService { */ public int getPortCount() { return 2; } - @Override - public String[] getPortSuffixes() { - return new String[]{ "rpc", "http" }; - } - private int getConfigServerRpcPort() { return getRelativePort(0); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java index 1f77b96244f..f93a3b39ad6 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.model.admin; import com.yahoo.cloud.config.LogforwarderConfig; import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.vespa.model.AbstractService; +import com.yahoo.vespa.model.PortAllocBridge; public class LogForwarder extends AbstractService implements LogforwarderConfig.Producer { @@ -50,6 +51,10 @@ public class LogForwarder extends AbstractService implements LogforwarderConfig. return new Config(null, null, null, null); } + // LogForwarder does not need any ports. + @Override + public void allocatePorts(int start, PortAllocBridge from) { } + /** * LogForwarder does not need any ports. * @@ -57,11 +62,6 @@ public class LogForwarder extends AbstractService implements LogforwarderConfig. */ public int getPortCount() { return 0; } - @Override - public String[] getPortSuffixes() { - return null; - } - /** * @return The command used to start LogForwarder */ diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Logserver.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Logserver.java index eca8fd40e69..cdc3fd4c4d4 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Logserver.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Logserver.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.model.admin; import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.vespa.model.AbstractService; +import com.yahoo.vespa.model.PortAllocBridge; /** * Represents the Logserver. There is exactly one logserver in a Vespa @@ -68,8 +69,12 @@ public class Logserver extends AbstractService { } @Override - public String[] getPortSuffixes() { - return new String[]{ "rpc", "unused/1", "unused/2", "unused/3" }; + public void allocatePorts(int start, PortAllocBridge from) { + int port = (start == 0) ? getWantedPort() : start; + from.requirePort(port++, "rpc"); + from.requirePort(port++, "unused/1"); + from.requirePort(port++, "unused/2"); + from.requirePort(port++, "unused/3"); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java index 2c4fa83d02b..43f02f8b6d4 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.model.admin; import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.vespa.config.core.StateserverConfig; import com.yahoo.vespa.model.AbstractService; +import com.yahoo.vespa.model.PortAllocBridge; /** * Represents a Slobrok service. @@ -13,6 +14,8 @@ import com.yahoo.vespa.model.AbstractService; public class Slobrok extends AbstractService implements StateserverConfig.Producer { private static final long serialVersionUID = 1L; + public final static int BASEPORT = 19099; + @Override public void getConfig(StateserverConfig.Builder builder) { builder.httpport(getHealthPort()); @@ -32,14 +35,9 @@ public class Slobrok extends AbstractService implements StateserverConfig.Produc } @Override - public boolean requiresConsecutivePorts() { - return false; - } - - @Override public int getWantedPort() { if (getId() == 1) { - return 19099; + return BASEPORT; } else { return 0; } @@ -49,6 +47,13 @@ public class Slobrok extends AbstractService implements StateserverConfig.Produc return "exec $ROOT/sbin/vespa-slobrok -p " + getRpcPort() + " -c " + getConfigId(); } + @Override + public void allocatePorts(int start, PortAllocBridge from) { + if (start == 0) start = BASEPORT; + from.wantPort(start, "rpc"); + from.allocatePort("http"); + } + /** * @return The number of ports needed by the slobrok. */ @@ -56,11 +61,6 @@ public class Slobrok extends AbstractService implements StateserverConfig.Produc return 2; } - @Override - public String[] getPortSuffixes() { - return new String[] { "rpc", "http" }; - } - /** * @return The port on which this slobrok should respond */ diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainer.java index 2a698233713..01168c59442 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainer.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainer.java @@ -13,6 +13,7 @@ import ai.vespa.metricsproxy.service.VespaServicesConfig; import com.yahoo.config.model.api.container.ContainerServiceType; import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.config.provision.ClusterMembership; +import com.yahoo.vespa.model.PortAllocBridge; import com.yahoo.vespa.model.container.Container; import java.util.LinkedHashMap; @@ -58,6 +59,15 @@ public class MetricsProxyContainer extends Container implements } int metricsRpcPortOffset() { + if (numHttpServerPorts != 2) { + throw new IllegalArgumentException("expecting 2 http server ports"); + } + if (numMessageBusPorts() != 0) { + throw new IllegalArgumentException("expecting 0 message bus ports"); + } + if (numRpcPorts() != 1) { + throw new IllegalArgumentException("expecting 1 rpc port"); + } return numHttpServerPorts + numMessageBusPorts() + numRpcPorts(); } @@ -66,9 +76,11 @@ public class MetricsProxyContainer extends Container implements return METRICS_PROXY_CONTAINER; } + static public int BASEPORT = 19092; + @Override public int getWantedPort() { - return 19092; + return BASEPORT; } @Override @@ -78,8 +90,12 @@ public class MetricsProxyContainer extends Container implements // Must have predictable ports for both http and rpc. @Override - public boolean requiresConsecutivePorts() { - return true; + public void allocatePorts(int start, PortAllocBridge from) { + if (start == 0) start = BASEPORT; + from.wantPort(start++, "http"); + from.wantPort(start++, "http/1"); + from.wantPort(start++, "rpc/admin"); + from.wantPort(start++, "rpc/metrics"); } @Override @@ -94,13 +110,6 @@ public class MetricsProxyContainer extends Container implements } @Override - public String[] getPortSuffixes() { - var suffixes = super.getPortSuffixes(); - suffixes[metricsRpcPortOffset()] = "rpc/metrics"; - return suffixes; - } - - @Override public void getConfig(RpcConnectorConfig.Builder builder) { builder.port(getRelativePort(metricsRpcPortOffset())); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java b/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java index 52abe8e8fde..3bc68e4a879 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java @@ -14,6 +14,7 @@ import com.yahoo.osgi.provider.model.ComponentModel; import com.yahoo.search.config.QrStartConfig; import com.yahoo.vespa.defaults.Defaults; import com.yahoo.vespa.model.AbstractService; +import com.yahoo.vespa.model.PortAllocBridge; import com.yahoo.vespa.model.application.validation.RestartConfigs; import com.yahoo.vespa.model.container.component.Component; import com.yahoo.vespa.model.container.component.ComponentGroup; @@ -157,8 +158,6 @@ public abstract class Container extends AbstractService implements if (getHttp() == null) { initDefaultJettyConnector(); - } else { - reserveHttpPortsPrepended(); } tagServers(); @@ -181,14 +180,6 @@ public abstract class Container extends AbstractService implements } } - private void reserveHttpPortsPrepended() { - if (getHttp() != null && getHttp().getHttpServer() != null) { - for (ConnectorFactory connectorFactory : getHttp().getHttpServer().getConnectorFactories()) { - reservePortPrepended(getPort(connectorFactory), "http/" + connectorFactory.getName()); - } - } - } - private int getPort(ConnectorFactory connectorFactory) { return connectorFactory.getListenPort(); } @@ -233,12 +224,8 @@ public abstract class Container extends AbstractService implements return requireSpecificPorts && (getHttp() == null); } - public boolean requiresConsecutivePorts() { - return false; - } - /** - * @return the number of ports needed by the Container except those reserved manually(reservePortPrepended) + * @return the number of ports needed by the Container */ public int getPortCount() { // TODO Vespa 8: remove +2, only here for historical reasons @@ -247,30 +234,39 @@ public abstract class Container extends AbstractService implements } @Override - public String[] getPortSuffixes() { - // TODO clean up this mess - int n = getPortCount(); - String[] suffixes = new String[n]; - int off = 0; - int httpPorts = (getHttp() != null) ? 0 : numHttpServerPorts; - if (httpPorts > 0) { - suffixes[off++] = "http"; - } - for (int i = 1; i < httpPorts; i++) { - suffixes[off++] = "http/" + i; + public void allocatePorts(int start, PortAllocBridge from) { + if (start == 0) start = BASEPORT; + int off = 2; + if (getHttp() == null) { + if (requireSpecificPorts) { + from.requirePort(start, "http"); + } else { + from.allocatePort("http"); + } + from.allocatePort("http/1"); + } else if (getHttp().getHttpServer() == null) { + // no http server ports + } else { + for (ConnectorFactory connectorFactory : getHttp().getHttpServer().getConnectorFactories()) { + int port = getPort(connectorFactory); + String name = "http/" + connectorFactory.getName(); + from.requirePort(port, name); + } } if (messageBusEnabled()) { - suffixes[off++] = "messaging"; + from.allocatePort("messaging"); + ++off; } if (rpcServerEnabled()) { - suffixes[off++] = "rpc/admin"; + from.allocatePort("rpc/admin"); + ++off; } - while (off < n) { - suffixes[off] = "unused/" + off; + // TODO: remove this + if (getHttp() == null) { + from.allocatePort("unused/" + off); ++off; + from.allocatePort("unused/" + off); } - assert (off == n); - return suffixes; } /** diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentNode.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentNode.java index d25396c6a50..9a8a57f12ea 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentNode.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentNode.java @@ -8,6 +8,7 @@ import com.yahoo.vespa.config.content.core.StorServerConfig; import com.yahoo.vespa.config.content.core.StorStatusConfig; import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.vespa.model.AbstractService; +import com.yahoo.vespa.model.PortAllocBridge; import com.yahoo.vespa.model.application.validation.RestartConfigs; /** @@ -56,8 +57,16 @@ public abstract class ContentNode extends AbstractService public int getPortCount() { return 3; } @Override - public String[] getPortSuffixes() { - return new String[] { "messaging", "rpc", "http" }; + public void allocatePorts(int start, PortAllocBridge from) { + if (start == 0) { + from.allocatePort("messaging"); + from.allocatePort("rpc"); + from.allocatePort("http"); + } else { + from.wantPort(start++, "messaging"); + from.wantPort(start++, "rpc"); + from.wantPort(start++, "http"); + } } @Override diff --git a/config-model/src/main/java/com/yahoo/vespa/model/generic/service/Service.java b/config-model/src/main/java/com/yahoo/vespa/model/generic/service/Service.java index 0d30bade53c..325f511edf1 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/generic/service/Service.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/generic/service/Service.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.model.generic.service; import com.yahoo.vespa.model.AbstractService; import com.yahoo.vespa.model.HostResource; +import com.yahoo.vespa.model.PortAllocBridge; /** * An application specific generic service @@ -24,9 +25,7 @@ public class Service extends AbstractService { } @Override - public String[] getPortSuffixes() { - return null; - } + public void allocatePorts(int start, PortAllocBridge from) { } @Override public String getStartupCommand() { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/Dispatch.java b/config-model/src/main/java/com/yahoo/vespa/model/search/Dispatch.java index c50f772d8d0..2e821a67cb2 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/search/Dispatch.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/search/Dispatch.java @@ -5,6 +5,7 @@ import com.yahoo.vespa.config.search.core.FdispatchrcConfig; import com.yahoo.vespa.config.search.core.PartitionsConfig; import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.vespa.model.AbstractService; +import com.yahoo.vespa.model.PortAllocBridge; import com.yahoo.vespa.model.application.validation.RestartConfigs; import com.yahoo.vespa.model.content.SearchCoverage; @@ -230,14 +231,17 @@ public class Dispatch extends AbstractService implements SearchInterface, } } + @Override + public void allocatePorts(int start, PortAllocBridge from) { + // NB: ignore "start" + from.allocatePort("rpc"); + from.allocatePort("fs4"); + from.allocatePort("health"); + } + /** * @return the number of ports needed */ public int getPortCount() { return 3; } - @Override - public String[] getPortSuffixes() { - return new String[]{ "rpc", "fs4", "health" }; - } - } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java index 21882ee640a..c4acf8b5b0b 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java @@ -16,6 +16,7 @@ import com.yahoo.vespa.config.content.core.StorStatusConfig; import com.yahoo.vespa.config.search.core.ProtonConfig; import static com.yahoo.vespa.defaults.Defaults.getDefaults; import com.yahoo.vespa.model.AbstractService; +import com.yahoo.vespa.model.PortAllocBridge; import com.yahoo.vespa.model.admin.monitoring.Monitoring; import com.yahoo.vespa.model.application.validation.RestartConfigs; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; @@ -158,6 +159,16 @@ public class SearchNode extends AbstractService implements return nodeSpec; } + @Override + public void allocatePorts(int start, PortAllocBridge from) { + // NB: ignore "start" + from.allocatePort("rpc"); + from.allocatePort("fs4"); + from.allocatePort("future/4"); + from.allocatePort("unused/3"); + from.allocatePort("health"); + } + /** * Returns the number of ports needed by this service. * @@ -168,11 +179,6 @@ public class SearchNode extends AbstractService implements return 5; } - @Override - public String[] getPortSuffixes() { - return new String[] { "rpc", "fs4", "future/4", "unused/3", "health" }; - } - /** * Returns the RPC port used by this searchnode. * diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/TransactionLogServer.java b/config-model/src/main/java/com/yahoo/vespa/model/search/TransactionLogServer.java index 4f854800c05..2c457940f24 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/search/TransactionLogServer.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/search/TransactionLogServer.java @@ -5,6 +5,7 @@ import com.yahoo.config.model.deploy.DeployState; import com.yahoo.searchlib.TranslogserverConfig; import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.vespa.model.AbstractService; +import com.yahoo.vespa.model.PortAllocBridge; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder; import org.w3c.dom.Element; @@ -39,8 +40,9 @@ public class TransactionLogServer extends AbstractService { } @Override - public String[] getPortSuffixes() { - return new String[]{"tls"}; + public void allocatePorts(int start, PortAllocBridge from) { + // NB: ignore "start" + from.allocatePort("tls"); } /** |