summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/SlobrokClient.java13
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducer.java1
-rw-r--r--document/src/main/java/com/yahoo/document/datatypes/FieldValue.java7
-rw-r--r--documentapi/abi-spec.json5
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ExternPolicy.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ExternalSlobrokPolicy.java21
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LoadBalancer.java6
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LoadBalancerPolicy.java3
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LocalServicePolicy.java2
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoundRobinPolicy.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/StoragePolicy.java14
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/SubsetServicePolicy.java6
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/TargetCachingSlobrokHostFetcherTest.java15
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/LoadBalancerTestCase.java9
-rwxr-xr-xdocumentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestCase.java52
-rwxr-xr-xdocumentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestFrame.java23
-rw-r--r--jrt/src/com/yahoo/jrt/slobrok/api/IMirror.java4
-rw-r--r--jrt/src/com/yahoo/jrt/slobrok/api/Mirror.java5
-rw-r--r--jrt/tests/com/yahoo/jrt/SlobrokTest.java33
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalWire.java4
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCService.java9
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/network/rpc/test/TestServer.java5
-rwxr-xr-xmessagebus/src/test/java/com/yahoo/messagebus/network/rpc/ServiceAddressTestCase.java5
-rw-r--r--messagebus/src/test/java/com/yahoo/messagebus/network/rpc/SlobrokTestCase.java18
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/slobrok/SlobrokMonitor.java4
25 files changed, 167 insertions, 101 deletions
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/SlobrokClient.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/SlobrokClient.java
index 498037a4984..bb3d7e049d1 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/SlobrokClient.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/SlobrokClient.java
@@ -15,7 +15,12 @@ import com.yahoo.vespa.clustercontroller.core.Timer;
import com.yahoo.vespa.clustercontroller.core.ContentCluster;
import com.yahoo.vespa.clustercontroller.core.listeners.NodeAddedOrRemovedListener;
-import java.util.*;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.StringTokenizer;
+import java.util.TreeMap;
import java.util.logging.Logger;
public class SlobrokClient implements NodeLookup {
@@ -190,8 +195,8 @@ public class SlobrokClient implements NodeLookup {
private Map<Node, SlobrokData> getSlobrokData(String pattern) {
Map<Node, SlobrokData> result = new TreeMap<>();
- Mirror.Entry[] entries = mirror.lookup(pattern);
- log.log(LogLevel.SPAM, "Looking for slobrok entries with pattern '" + pattern + "'. Found " + entries.length + " entries.");
+ List<Mirror.Entry> entries = mirror.lookup(pattern);
+ log.log(LogLevel.SPAM, "Looking for slobrok entries with pattern '" + pattern + "'. Found " + entries.size() + " entries.");
for (Mirror.Entry entry : entries) {
StringTokenizer st = new StringTokenizer(entry.getName(), "/");
String addressType = st.nextToken();
@@ -209,7 +214,7 @@ public class SlobrokClient implements NodeLookup {
private static class SlobrokData {
public Node node;
- public String rpcAddress;
+ String rpcAddress;
SlobrokData(Node node, String rpcAddress) {
this.node = node;
diff --git a/config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducer.java b/config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducer.java
index db072afd201..65d94807d7f 100644
--- a/config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducer.java
+++ b/config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducer.java
@@ -3,7 +3,6 @@ package com.yahoo.config.model.producer;
import com.google.common.annotations.Beta;
import com.yahoo.config.ConfigInstance;
-import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.model.ApplicationConfigProducerRoot;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.subscription.ConfigInstanceUtil;
diff --git a/document/src/main/java/com/yahoo/document/datatypes/FieldValue.java b/document/src/main/java/com/yahoo/document/datatypes/FieldValue.java
index f895ad21b0a..287af5c34b9 100644
--- a/document/src/main/java/com/yahoo/document/datatypes/FieldValue.java
+++ b/document/src/main/java/com/yahoo/document/datatypes/FieldValue.java
@@ -5,14 +5,17 @@ import com.yahoo.document.ArrayDataType;
import com.yahoo.document.DataType;
import com.yahoo.document.Field;
import com.yahoo.document.FieldPath;
-import com.yahoo.document.serialization.*;
+import com.yahoo.document.serialization.DocumentSerializer;
+import com.yahoo.document.serialization.DocumentSerializerFactory;
+import com.yahoo.document.serialization.FieldReader;
+import com.yahoo.document.serialization.FieldWriter;
+import com.yahoo.document.serialization.XmlStream;
import com.yahoo.io.GrowableByteBuffer;
import com.yahoo.vespa.objects.BufferSerializer;
import com.yahoo.vespa.objects.Deserializer;
import com.yahoo.vespa.objects.Identifiable;
import com.yahoo.vespa.objects.Ids;
import com.yahoo.vespa.objects.Serializer;
-import com.yahoo.document.config.DocumentmanagerConfig.Datatype.Structtype.Compresstype;
/**
* @author Einar M R Rosenvinge
diff --git a/documentapi/abi-spec.json b/documentapi/abi-spec.json
index cbfe07eb93d..e1e5f778423 100644
--- a/documentapi/abi-spec.json
+++ b/documentapi/abi-spec.json
@@ -2035,10 +2035,9 @@
"abstract"
],
"methods": [
- "public void <init>(java.util.Map)",
"public void init()",
"public com.yahoo.jrt.slobrok.api.IMirror getMirror()",
- "public com.yahoo.jrt.slobrok.api.Mirror$Entry[] lookup(com.yahoo.messagebus.routing.RoutingContext, java.lang.String)",
+ "public java.util.List lookup(com.yahoo.messagebus.routing.RoutingContext, java.lang.String)",
"public synchronized void configure(com.yahoo.cloud.config.SlobroksConfig)",
"public void destroy()",
"public bridge synthetic void configure(com.yahoo.config.ConfigInstance)"
@@ -2207,7 +2206,7 @@
"public void <init>(java.lang.String)",
"public java.util.List getNodeWeights()",
"public int getIndex(java.lang.String)",
- "public com.yahoo.documentapi.messagebus.protocol.LoadBalancer$Node getRecipient(com.yahoo.jrt.slobrok.api.Mirror$Entry[])",
+ "public com.yahoo.documentapi.messagebus.protocol.LoadBalancer$Node getRecipient(java.util.List)",
"public void received(com.yahoo.documentapi.messagebus.protocol.LoadBalancer$Node, boolean)"
],
"fields": []
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ExternPolicy.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ExternPolicy.java
index 312fd6e5964..e81ac4ae05e 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ExternPolicy.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ExternPolicy.java
@@ -103,7 +103,7 @@ public class ExternPolicy implements DocumentProtocolRoutingPolicy {
if (generation != upd) {
generation = upd;
recipients.clear();
- Mirror.Entry[] arr = mirror.lookup(pattern);
+ List<Mirror.Entry> arr = mirror.lookup(pattern);
for (Mirror.Entry entry : arr) {
recipients.add(Hop.parse(entry.getSpec() + session));
}
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ExternalSlobrokPolicy.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ExternalSlobrokPolicy.java
index 3ebe5b7281e..39242bb6cab 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ExternalSlobrokPolicy.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ExternalSlobrokPolicy.java
@@ -11,6 +11,7 @@ import com.yahoo.jrt.slobrok.api.SlobrokList;
import com.yahoo.messagebus.routing.RoutingContext;
import com.yahoo.cloud.config.SlobroksConfig;
+import java.util.List;
import java.util.Map;
/**
@@ -19,16 +20,16 @@ import java.util.Map;
*/
public abstract class ExternalSlobrokPolicy extends AsyncInitializationPolicy implements ConfigSubscriber.SingleSubscriber<SlobroksConfig> {
String error;
- Supervisor orb = null;
- Mirror mirror = null;
- SlobrokList slobroks = null;
- boolean firstTry = true;
+ private Supervisor orb = null;
+ private Mirror mirror = null;
+ private SlobrokList slobroks = null;
+ private boolean firstTry = true;
private ConfigSubscriber subscriber;
String[] configSources = null;
- String slobrokConfigId = "admin/slobrok.0";
+ private final static String slobrokConfigId = "admin/slobrok.0";
- public ExternalSlobrokPolicy(Map<String, String> param) {
+ ExternalSlobrokPolicy(Map<String, String> param) {
super();
String conf = param.get("config");
@@ -72,16 +73,16 @@ public abstract class ExternalSlobrokPolicy extends AsyncInitializationPolicy im
return mirror;
}
- public Mirror.Entry[] lookup(RoutingContext context, String pattern) {
+ public List<Mirror.Entry> lookup(RoutingContext context, String pattern) {
IMirror mirror1 = (mirror != null ? mirror : context.getMirror());
- Mirror.Entry[] arr = mirror1.lookup(pattern);
+ List<Mirror.Entry> arr = mirror1.lookup(pattern);
- if ((arr.length == 0) && firstTry) {
+ if ((arr.isEmpty()) && firstTry) {
synchronized(this) {
try {
int count = 0;
- while (arr.length == 0 && count < 100) {
+ while (arr.isEmpty() && count < 100) {
Thread.sleep(50);
arr = mirror1.lookup(pattern);
count++;
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LoadBalancer.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LoadBalancer.java
index 167a480e1aa..a2875f14ab5 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LoadBalancer.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LoadBalancer.java
@@ -62,8 +62,8 @@ public class LoadBalancer {
* @param choices the node choices, represented as Slobrok entries
* @return the chosen node, or null only if the given choices were zero
*/
- public Node getRecipient(Mirror.Entry[] choices) {
- if (choices.length == 0) return null;
+ public Node getRecipient(List<Mirror.Entry> choices) {
+ if (choices.isEmpty()) return null;
double weightSum = 0.0;
Node selectedNode = null;
@@ -79,7 +79,7 @@ public class LoadBalancer {
}
if (selectedNode == null) { // Position>sum of all weights: Wrap around (but keep the remainder for some reason)
position -= weightSum;
- selectedNode = new Node(choices[0], getNodeMetrics(choices[0]));
+ selectedNode = new Node(choices.get(0), getNodeMetrics(choices.get(0)));
}
position += 1.0;
selectedNode.metrics.sent.incrementAndGet();
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LoadBalancerPolicy.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LoadBalancerPolicy.java
index 7c5345351a8..9cf82144e71 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LoadBalancerPolicy.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LoadBalancerPolicy.java
@@ -9,6 +9,7 @@ import com.yahoo.messagebus.routing.Route;
import com.yahoo.messagebus.routing.RoutingContext;
import com.yahoo.messagebus.routing.RoutingNodeIterator;
+import java.util.List;
import java.util.Map;
/**
@@ -75,7 +76,7 @@ public class LoadBalancerPolicy extends ExternalSlobrokPolicy {
@return Returns a hop representing the TCP address of the target, or null if none could be found.
*/
private LoadBalancer.Node getRecipient(RoutingContext context) {
- Mirror.Entry [] lastLookup = lookup(context, pattern);
+ List<Mirror.Entry> lastLookup = lookup(context, pattern);
return loadBalancer.getRecipient(lastLookup);
}
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LocalServicePolicy.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LocalServicePolicy.java
index eb56a85e378..d4ebd4ecd81 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LocalServicePolicy.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/LocalServicePolicy.java
@@ -83,7 +83,7 @@ public class LocalServicePolicy implements DocumentProtocolRoutingPolicy {
entry.generation = upd;
entry.recipients.clear();
- Mirror.Entry[] arr = ctx.getMirror().lookup(ctx.getHopPrefix() + "*" + ctx.getHopSuffix());
+ List<Mirror.Entry> arr = ctx.getMirror().lookup(ctx.getHopPrefix() + "*" + ctx.getHopSuffix());
String self = localAddress != null ? localAddress : toAddress(ctx.getMessageBus().getConnectionSpec());
for (Mirror.Entry item : arr) {
if (self.equals(toAddress(item.getSpec()))) {
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoundRobinPolicy.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoundRobinPolicy.java
index 244d101b36f..3a1599ab71b 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoundRobinPolicy.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoundRobinPolicy.java
@@ -82,7 +82,7 @@ public class RoundRobinPolicy implements DocumentProtocolRoutingPolicy {
entry.generation = upd;
entry.recipients.clear();
for (int i = 0; i < ctx.getNumRecipients(); ++i) {
- Mirror.Entry[] arr = ctx.getMirror().lookup(ctx.getRecipient(i).getHop(0).toString());
+ List<Mirror.Entry> arr = ctx.getMirror().lookup(ctx.getRecipient(i).getHop(0).toString());
for (Mirror.Entry item : arr) {
entry.recipients.add(Hop.parse(item.getName()));
}
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/StoragePolicy.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/StoragePolicy.java
index 341589643d2..048149e86ab 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/StoragePolicy.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/StoragePolicy.java
@@ -107,7 +107,7 @@ public class StoragePolicy extends ExternalSlobrokPolicy {
this.policy = policy;
}
- private Mirror.Entry[] getEntries(String hostPattern, RoutingContext context) {
+ private List<Mirror.Entry> getEntries(String hostPattern, RoutingContext context) {
return policy.lookup(context, hostPattern);
}
@@ -116,16 +116,16 @@ public class StoragePolicy extends ExternalSlobrokPolicy {
public IMirror getMirror(RoutingContext context) { return context.getMirror(); }
public String getTargetSpec(Integer distributor, RoutingContext context) {
- Mirror.Entry[] arr = getEntries(patternGenerator.getDistributorHostPattern(distributor), context);
- if (arr.length == 0) return null;
+ List<Mirror.Entry> arr = getEntries(patternGenerator.getDistributorHostPattern(distributor), context);
+ if (arr.isEmpty()) return null;
if (distributor != null) {
- if (arr.length == 1) {
- return convertSlobrokNameToSessionName(arr[0].getSpec());
+ if (arr.size() == 1) {
+ return convertSlobrokNameToSessionName(arr.get(0).getSpec());
} else {
- log.log(LogLevel.WARNING, "Got " + arr.length + " matches for a distributor.");
+ log.log(LogLevel.WARNING, "Got " + arr.size() + " matches for a distributor.");
}
} else {
- return convertSlobrokNameToSessionName(arr[randomizer.nextInt(arr.length)].getSpec());
+ return convertSlobrokNameToSessionName(arr.get(randomizer.nextInt(arr.size())).getSpec());
}
return null;
}
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/SubsetServicePolicy.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/SubsetServicePolicy.java
index 31802f2872f..3251c038fc7 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/SubsetServicePolicy.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/SubsetServicePolicy.java
@@ -109,10 +109,10 @@ public class SubsetServicePolicy implements DocumentProtocolRoutingPolicy {
entry.generation = upd;
entry.recipients.clear();
- Mirror.Entry[] arr = ctx.getMirror().lookup(ctx.getHopPrefix() + "*" + ctx.getHopSuffix());
+ List<Mirror.Entry> arr = ctx.getMirror().lookup(ctx.getHopPrefix() + "*" + ctx.getHopSuffix());
int pos = ctx.getMessageBus().getConnectionSpec().hashCode();
- for (int i = 0; i < subsetSize && i < arr.length; ++i) {
- entry.recipients.add(Hop.parse(arr[((pos + i) & Integer.MAX_VALUE) % arr.length].getName()));
+ for (int i = 0; i < subsetSize && i < arr.size(); ++i) {
+ entry.recipients.add(Hop.parse(arr.get(((pos + i) & Integer.MAX_VALUE) % arr.size()).getName()));
}
}
return entry;
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/TargetCachingSlobrokHostFetcherTest.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/TargetCachingSlobrokHostFetcherTest.java
index 7e6c7bc468a..4413b657739 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/TargetCachingSlobrokHostFetcherTest.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/TargetCachingSlobrokHostFetcherTest.java
@@ -7,6 +7,8 @@ import com.yahoo.messagebus.routing.RoutingContext;
import org.junit.Test;
import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@@ -23,26 +25,25 @@ import static org.mockito.Mockito.when;
*/
public class TargetCachingSlobrokHostFetcherTest {
- static String idOfIndex(int index) {
+ private static String idOfIndex(int index) {
return String.format("storage/cluster.foo/distributor/%d/default", index);
}
- static String idOfWildcardLookup() {
+ private static String idOfWildcardLookup() {
return "storage/cluster.foo/distributor/*/default";
}
- static String lookupSpecOfIndex(int index) {
+ private static String lookupSpecOfIndex(int index) {
return String.format("tcp/localhost:%d", index);
}
- static String resolvedSpecOfIndex(int index) {
+ private static String resolvedSpecOfIndex(int index) {
return String.format("tcp/localhost:%d/default", index);
}
- static Mirror.Entry[] dummyEntries(int... indices) {
+ private static List<Mirror.Entry> dummyEntries(int... indices) {
return Arrays.stream(indices)
- .mapToObj(index -> new Mirror.Entry(idOfIndex(index), lookupSpecOfIndex(index)))
- .toArray(Mirror.Entry[]::new);
+ .mapToObj(index -> new Mirror.Entry(idOfIndex(index), lookupSpecOfIndex(index))).collect(Collectors.toList());
}
static class Fixture {
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/LoadBalancerTestCase.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/LoadBalancerTestCase.java
index 698b778c312..51dd1ac12b8 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/LoadBalancerTestCase.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/LoadBalancerTestCase.java
@@ -5,6 +5,7 @@ import com.yahoo.documentapi.messagebus.protocol.LoadBalancer;
import com.yahoo.jrt.slobrok.api.Mirror;
import org.junit.Test;
+import java.util.Arrays;
import java.util.List;
import static org.junit.Assert.assertEquals;
@@ -42,9 +43,9 @@ public class LoadBalancerTestCase {
public void testLoadBalancer() {
LoadBalancer lb = new LoadBalancer("foo");
- Mirror.Entry[] entries = new Mirror.Entry[]{ new Mirror.Entry("foo/0/default", "tcp/bar:1"),
- new Mirror.Entry("foo/1/default", "tcp/bar:2"),
- new Mirror.Entry("foo/2/default", "tcp/bar:3") };
+ List<Mirror.Entry> entries = Arrays.asList(new Mirror.Entry("foo/0/default", "tcp/bar:1"),
+ new Mirror.Entry("foo/1/default", "tcp/bar:2"),
+ new Mirror.Entry("foo/2/default", "tcp/bar:3"));
List<LoadBalancer.NodeMetrics> weights = lb.getNodeWeights();
{
@@ -100,7 +101,7 @@ public class LoadBalancerTestCase {
public void testLoadBalancerOneItemOnly() {
LoadBalancer lb = new LoadBalancer("foo");
- Mirror.Entry[] entries = new Mirror.Entry[]{ new Mirror.Entry("foo/0/default", "tcp/bar:1") };
+ List<Mirror.Entry> entries = Arrays.asList(new Mirror.Entry("foo/0/default", "tcp/bar:1") );
List<LoadBalancer.NodeMetrics> weights = lb.getNodeWeights();
assertEquals("foo/0/default" , lb.getRecipient(entries).entry.getName());
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestCase.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestCase.java
index e2f1c9cd937..fd9d3f78ca8 100755
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestCase.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestCase.java
@@ -1,21 +1,61 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol.test;
-import com.yahoo.document.*;
-import com.yahoo.documentapi.messagebus.protocol.*;
+import com.yahoo.document.Document;
+import com.yahoo.document.DocumentId;
+import com.yahoo.document.DocumentPut;
+import com.yahoo.document.DocumentTypeManager;
+import com.yahoo.document.DocumentTypeManagerConfigurer;
+import com.yahoo.document.DocumentUpdate;
+import com.yahoo.documentapi.messagebus.protocol.ANDPolicy;
+import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol;
+import com.yahoo.documentapi.messagebus.protocol.DocumentRouteSelectorPolicy;
+import com.yahoo.documentapi.messagebus.protocol.ErrorPolicy;
+import com.yahoo.documentapi.messagebus.protocol.ExternPolicy;
+import com.yahoo.documentapi.messagebus.protocol.GetDocumentMessage;
+import com.yahoo.documentapi.messagebus.protocol.GetDocumentReply;
+import com.yahoo.documentapi.messagebus.protocol.LoadBalancerPolicy;
+import com.yahoo.documentapi.messagebus.protocol.LocalServicePolicy;
+import com.yahoo.documentapi.messagebus.protocol.PutDocumentMessage;
+import com.yahoo.documentapi.messagebus.protocol.RemoveDocumentMessage;
+import com.yahoo.documentapi.messagebus.protocol.RoundRobinPolicy;
+import com.yahoo.documentapi.messagebus.protocol.SubsetServicePolicy;
+import com.yahoo.documentapi.messagebus.protocol.UpdateDocumentMessage;
import com.yahoo.jrt.ListenFailedException;
import com.yahoo.jrt.slobrok.api.IMirror;
import com.yahoo.jrt.slobrok.api.Mirror;
import com.yahoo.jrt.slobrok.server.Slobrok;
-import com.yahoo.messagebus.*;
+import com.yahoo.messagebus.DestinationSession;
+import com.yahoo.messagebus.EmptyReply;
import com.yahoo.messagebus.Error;
+import com.yahoo.messagebus.ErrorCode;
+import com.yahoo.messagebus.IntermediateSession;
+import com.yahoo.messagebus.Message;
+import com.yahoo.messagebus.MessageBus;
+import com.yahoo.messagebus.Reply;
+import com.yahoo.messagebus.SourceSession;
+import com.yahoo.messagebus.SourceSessionParams;
import com.yahoo.messagebus.network.rpc.test.TestServer;
-import com.yahoo.messagebus.routing.*;
+import com.yahoo.messagebus.routing.HopBlueprint;
+import com.yahoo.messagebus.routing.HopSpec;
+import com.yahoo.messagebus.routing.PolicyDirective;
+import com.yahoo.messagebus.routing.Route;
+import com.yahoo.messagebus.routing.RouteSpec;
+import com.yahoo.messagebus.routing.RoutingNode;
+import com.yahoo.messagebus.routing.RoutingPolicy;
+import com.yahoo.messagebus.routing.RoutingSpec;
+import com.yahoo.messagebus.routing.RoutingTableSpec;
import com.yahoo.messagebus.test.Receptor;
import org.junit.Before;
import org.junit.Test;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.util.TreeSet;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
@@ -721,7 +761,7 @@ public class PolicyTestCase {
throws InterruptedException, TimeoutException
{
for (int i = 0; i < TIMEOUT_MILLIS / 10; ++i) {
- if (slobrok.lookup(pattern).length == numEntries) {
+ if (slobrok.lookup(pattern).size() == numEntries) {
return;
}
Thread.sleep(10);
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestFrame.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestFrame.java
index 875ef276b01..89d5db62899 100755
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestFrame.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestFrame.java
@@ -6,19 +6,32 @@ import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol;
import com.yahoo.jrt.ListenFailedException;
import com.yahoo.jrt.slobrok.api.Mirror;
import com.yahoo.jrt.slobrok.server.Slobrok;
-import com.yahoo.messagebus.*;
+import com.yahoo.messagebus.EmptyReply;
+import com.yahoo.messagebus.ErrorCode;
+import com.yahoo.messagebus.Message;
+import com.yahoo.messagebus.MessageBus;
+import com.yahoo.messagebus.MessageBusParams;
+import com.yahoo.messagebus.Reply;
import com.yahoo.messagebus.network.Identity;
import com.yahoo.messagebus.network.Network;
import com.yahoo.messagebus.network.ServiceAddress;
import com.yahoo.messagebus.network.rpc.RPCNetwork;
import com.yahoo.messagebus.network.rpc.RPCNetworkParams;
import com.yahoo.messagebus.network.rpc.test.TestServer;
-import com.yahoo.messagebus.routing.*;
+import com.yahoo.messagebus.routing.HopSpec;
+import com.yahoo.messagebus.routing.Route;
+import com.yahoo.messagebus.routing.RoutingNode;
+import com.yahoo.messagebus.routing.RoutingSpec;
+import com.yahoo.messagebus.routing.RoutingTableSpec;
import com.yahoo.messagebus.test.Receptor;
import com.yahoo.messagebus.test.SimpleProtocol;
import com.yahoo.messagebus.test.SimpleReply;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import static org.junit.Assert.assertEquals;
@@ -272,8 +285,8 @@ public class PolicyTestFrame {
*/
public boolean waitSlobrok(String pattern, int cnt) {
for (int i = 0; i < 1000 && !Thread.currentThread().isInterrupted(); ++i) {
- Mirror.Entry[] res = net.getMirror().lookup(pattern);
- if (res.length == cnt) {
+ List<Mirror.Entry> res = net.getMirror().lookup(pattern);
+ if (res.size() == cnt) {
return true;
}
try { Thread.sleep(10); } catch (InterruptedException e) { /* ignore */ }
diff --git a/jrt/src/com/yahoo/jrt/slobrok/api/IMirror.java b/jrt/src/com/yahoo/jrt/slobrok/api/IMirror.java
index 9b3bd81fc3c..0079e2c9d67 100644
--- a/jrt/src/com/yahoo/jrt/slobrok/api/IMirror.java
+++ b/jrt/src/com/yahoo/jrt/slobrok/api/IMirror.java
@@ -1,6 +1,8 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt.slobrok.api;
+import java.util.List;
+
/**
* Defines an interface for the name server lookup.
*
@@ -21,7 +23,7 @@ public interface IMirror {
* @return a list of all matching services, with corresponding connect specs
* @param pattern The pattern used for matching
**/
- Mirror.Entry[] lookup(String pattern);
+ List<Mirror.Entry> lookup(String pattern);
/**
* Obtain the number of updates seen by this mirror. The value may wrap, but will never become 0 again. This can be
diff --git a/jrt/src/com/yahoo/jrt/slobrok/api/Mirror.java b/jrt/src/com/yahoo/jrt/slobrok/api/Mirror.java
index e131ad1b143..d957f77c6b3 100644
--- a/jrt/src/com/yahoo/jrt/slobrok/api/Mirror.java
+++ b/jrt/src/com/yahoo/jrt/slobrok/api/Mirror.java
@@ -5,6 +5,7 @@ import com.yahoo.jrt.*;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
import java.util.logging.Level;
@@ -81,7 +82,7 @@ public class Mirror implements IMirror {
}
@Override
- public Entry[] lookup(String pattern) {
+ public List<Entry> lookup(String pattern) {
ArrayList<Entry> found = new ArrayList<>();
char[] p = pattern.toCharArray();
for (Entry specEntry : specs) {
@@ -89,7 +90,7 @@ public class Mirror implements IMirror {
found.add(specEntry);
}
}
- return found.toArray(new Entry[found.size()]);
+ return found;
}
@Override
diff --git a/jrt/tests/com/yahoo/jrt/SlobrokTest.java b/jrt/tests/com/yahoo/jrt/SlobrokTest.java
index ee15c7cd1de..20266b0826a 100644
--- a/jrt/tests/com/yahoo/jrt/SlobrokTest.java
+++ b/jrt/tests/com/yahoo/jrt/SlobrokTest.java
@@ -1,10 +1,9 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jrt;
-
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Comparator;
+import java.util.List;
import com.yahoo.jrt.slobrok.api.SlobrokList;
import com.yahoo.jrt.slobrok.api.Mirror;
@@ -17,7 +16,6 @@ import org.junit.Before;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
-
public class SlobrokTest {
private static class SpecList extends ArrayList<Mirror.Entry> {
@@ -71,14 +69,13 @@ public class SlobrokTest {
return a.compareTo(b);
}
};
- Mirror.Entry[] expect =
- result.toArray(new Mirror.Entry[result.size()]);
- Arrays.sort(expect, cmp);
- Mirror.Entry[] actual = new Mirror.Entry[0];
+ List<Entry> expect = result;
+ expect.sort(cmp);
+ List<Entry> actual = new ArrayList<>();
for (int i = 0; i < 1000; i++) {
actual = mirror.lookup(pattern);
- Arrays.sort(actual, cmp);
- if (Arrays.equals(actual, expect)) {
+ actual.sort(cmp);
+ if (actual.equals(expect)) {
// err("lookup successful for pattern: " + pattern);
return;
}
@@ -87,18 +84,18 @@ public class SlobrokTest {
error = true;
err("lookup failed for pattern: " + pattern);
err("actual values:");
- if (actual.length == 0) {
+ if (actual.isEmpty()) {
err(" { EMPTY }");
}
- for (int i = 0; i < actual.length; i++) {
- err(" {" + actual[i].getName() + ", " + actual[i].getSpec() + "}");
+ for (Entry e : actual) {
+ err(" {" + e.getName() + ", " + e.getSpec() + "}");
}
err("expected values:");
- if (expect.length == 0) {
+ if (expect.isEmpty()) {
err(" { EMPTY }");
}
- for (int i = 0; i < expect.length; i++) {
- err(" {" + expect[i].getName() + ", " + expect[i].getSpec() + "}");
+ for (Entry e : expect) {
+ err(" {" + e.getName() + ", " + e.getSpec() + "}");
}
}
@@ -113,9 +110,9 @@ public class SlobrokTest {
assertTrue(mirror.ready());
assertTrue(mirror.updates() > 0);
- Mirror.Entry[] oneArr = mirror.lookup("*/*/*");
- assertTrue(oneArr.length == 1);
- Mirror.Entry one = oneArr[0];
+ List<Entry> oneArr = mirror.lookup("*/*/*");
+ assertTrue(oneArr.size() == 1);
+ Mirror.Entry one = oneArr.get(0);
assertTrue(one.equals(new Mirror.Entry(wantName, mySpec)));
assertFalse(one.equals(new Mirror.Entry("B/x/w", mySpec)));
assertFalse(one.equals(new Mirror.Entry(wantName, "foo:99")));
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalWire.java b/messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalWire.java
index 4f5fd6ab30a..9f6295b1ad2 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalWire.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalWire.java
@@ -41,7 +41,7 @@ public class LocalWire implements IMirror {
}
@Override
- public Mirror.Entry[] lookup(String pattern) {
+ public List<Mirror.Entry> lookup(String pattern) {
List<Mirror.Entry> out = new ArrayList<>();
Pattern regex = Pattern.compile(pattern.replace("*", "[a-zA-Z0-9_-]+"));
for (String key : services.keySet()) {
@@ -49,7 +49,7 @@ public class LocalWire implements IMirror {
out.add(new Mirror.Entry(key, key));
}
}
- return out.toArray(new Mirror.Entry[out.size()]);
+ return out;
}
@Override
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCService.java b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCService.java
index abe1b7b4db3..7c404207737 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCService.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCService.java
@@ -4,6 +4,7 @@ package com.yahoo.messagebus.network.rpc;
import com.yahoo.jrt.slobrok.api.IMirror;
import com.yahoo.jrt.slobrok.api.Mirror;
+import java.util.List;
import java.util.concurrent.ThreadLocalRandom;
/**
@@ -18,7 +19,7 @@ public class RPCService {
private final String pattern;
private int addressIdx = ThreadLocalRandom.current().nextInt(Integer.MAX_VALUE);
private int addressGen = 0;
- private Mirror.Entry[] addressList = null;
+ private List<Mirror.Entry> addressList = null;
/**
* Create a new RPCService backed by the given network and using the given service pattern.
@@ -51,9 +52,9 @@ public class RPCService {
addressGen = mirror.updates();
addressList = mirror.lookup(pattern);
}
- if (addressList != null && addressList.length > 0) {
- addressIdx = ++addressIdx % addressList.length;
- Mirror.Entry entry = addressList[addressIdx];
+ if (addressList != null && !addressList.isEmpty()) {
+ addressIdx = ++addressIdx % addressList.size();
+ Mirror.Entry entry = addressList.get(addressIdx);
return new RPCServiceAddress(entry.getName(), entry.getSpec());
}
}
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/test/TestServer.java b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/test/TestServer.java
index d7ce31a5223..b17bb892f7d 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/test/TestServer.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/test/TestServer.java
@@ -17,6 +17,7 @@ import com.yahoo.messagebus.routing.RoutingSpec;
import com.yahoo.messagebus.routing.RoutingTableSpec;
import com.yahoo.messagebus.test.SimpleProtocol;
+import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Logger;
@@ -121,8 +122,8 @@ public class TestServer {
for (int i = 0; i < 6000 && !Thread.currentThread().isInterrupted(); ++i) {
boolean done = true;
for (String pattern : slobrokState.getPatterns()) {
- Mirror.Entry[] res = net.getMirror().lookup(pattern);
- if (res.length != slobrokState.getCount(pattern)) {
+ List<Mirror.Entry> res = net.getMirror().lookup(pattern);
+ if (res.size() != slobrokState.getCount(pattern)) {
done = false;
}
}
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/ServiceAddressTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/ServiceAddressTestCase.java
index 476d85f59e9..1dbb30de585 100755
--- a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/ServiceAddressTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/ServiceAddressTestCase.java
@@ -11,6 +11,7 @@ import org.junit.Before;
import org.junit.Test;
import java.net.UnknownHostException;
+import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@@ -67,8 +68,8 @@ public class ServiceAddressTestCase {
private boolean waitSlobrok(String pattern, int num) {
for (int i = 0; i < 1000 && !Thread.currentThread().isInterrupted(); ++i) {
- Mirror.Entry[] res = network.getMirror().lookup(pattern);
- if (res.length == num) {
+ List<Mirror.Entry> res = network.getMirror().lookup(pattern);
+ if (res.size() == num) {
return true;
}
try {
diff --git a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/SlobrokTestCase.java b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/SlobrokTestCase.java
index c6737385f4c..dd779fd84c0 100644
--- a/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/SlobrokTestCase.java
+++ b/messagebus/src/test/java/com/yahoo/messagebus/network/rpc/SlobrokTestCase.java
@@ -31,8 +31,8 @@ public class SlobrokTestCase {
lst.add(new Mirror.Entry(fullName, spec));
return this;
}
- public Mirror.Entry[] toArray() {
- return lst.toArray(new Mirror.Entry[lst.size()]);
+ public List<Mirror.Entry> toArray() {
+ return lst;
}
}
@@ -44,18 +44,18 @@ public class SlobrokTestCase {
int port2;
int port3;
- void check(RPCNetwork net, String pattern, Mirror.Entry[] expect) {
+ void check(RPCNetwork net, String pattern, List<Mirror.Entry> expect) {
Comparator<Mirror.Entry> cmp = new Comparator<Mirror.Entry>() {
public int compare(Mirror.Entry a, Mirror.Entry b) {
return a.compareTo(b);
}
};
- Arrays.sort(expect, cmp);
- Mirror.Entry[] actual = null;
+ expect.sort(cmp);
+ List<Mirror.Entry> actual = null;
for (int i = 0; i < 1000; i++) {
actual = net.getMirror().lookup(pattern);
- Arrays.sort(actual, cmp);
- if (Arrays.equals(actual, expect)) {
+ actual.sort(cmp);
+ if (actual.equals(expect)) {
System.out.printf("lookup successful for pattern: %s\n", pattern);
return;
}
@@ -65,7 +65,7 @@ public class SlobrokTestCase {
}
System.out.printf("lookup failed for pattern: %s\n", pattern);
System.out.printf("actual values:\n");
- if (actual == null || actual.length == 0) {
+ if (actual == null || actual.isEmpty()) {
System.out.printf(" { EMPTY }\n");
} else {
for (Mirror.Entry entry : actual) {
@@ -73,7 +73,7 @@ public class SlobrokTestCase {
}
}
System.out.printf("expected values:\n");
- if (expect.length == 0) {
+ if (expect.isEmpty()) {
System.out.printf(" { EMPTY }\n");
} else {
for (Mirror.Entry entry : expect) {
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/slobrok/SlobrokMonitor.java b/service-monitor/src/main/java/com/yahoo/vespa/service/slobrok/SlobrokMonitor.java
index 482969c6625..1a402419ac0 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/slobrok/SlobrokMonitor.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/slobrok/SlobrokMonitor.java
@@ -67,7 +67,7 @@ public class SlobrokMonitor implements AutoCloseable {
}
List<Mirror.Entry> lookup(String pattern) {
- return Arrays.asList(mirror.lookup(pattern));
+ return mirror.lookup(pattern);
}
@Override
@@ -76,6 +76,6 @@ public class SlobrokMonitor implements AutoCloseable {
}
boolean registeredInSlobrok(String slobrokServiceName) {
- return mirror.lookup(slobrokServiceName).length > 0;
+ return !mirror.lookup(slobrokServiceName).isEmpty();
}
}