summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-12-19 08:31:30 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2019-12-19 08:31:30 +0000
commitae0f989de2585ed10b751ce3340a43fe24c2ef88 (patch)
tree24d9414155868b00839376369f9698d1ca604ef9 /container-search
parent18b31ea7d44d149ccd742999b5691402acb19a7b (diff)
Verify that destruct does not do bad things during destruct.
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/search/cluster/ClusterMonitor.java4
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcClient.java4
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTestCase.java22
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/fastsearch/test/MockDispatcher.java2
4 files changed, 28 insertions, 4 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/cluster/ClusterMonitor.java b/container-search/src/main/java/com/yahoo/search/cluster/ClusterMonitor.java
index fc186a95679..2aa896948a1 100644
--- a/container-search/src/main/java/com/yahoo/search/cluster/ClusterMonitor.java
+++ b/container-search/src/main/java/com/yahoo/search/cluster/ClusterMonitor.java
@@ -140,11 +140,11 @@ public class ClusterMonitor<T> {
ExecutorService pingExecutor=Executors.newCachedThreadPool(ThreadFactoryFactory.getDaemonThreadFactory("search.ping"));
while (!closed.get()) {
try {
+ log.finest("Activating ping");
+ ping(pingExecutor);
synchronized (nodeManager) {
nodeManager.wait(configuration.getCheckInterval());
}
- log.finest("Activating ping");
- ping(pingExecutor);
}
catch (Throwable e) {
if (closed.get() && e instanceof InterruptedException) {
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcClient.java b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcClient.java
index ea123b255eb..05ce6d50493 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcClient.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcClient.java
@@ -86,7 +86,9 @@ class RpcClient implements Client {
@Override
public void close() {
- target.close();
+ if (target != null) {
+ target.close();
+ }
}
@Override
diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTestCase.java
index 4011611b049..b5e54b46e5a 100644
--- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTestCase.java
@@ -3,6 +3,8 @@ package com.yahoo.prelude.fastsearch.test;
import com.google.common.collect.ImmutableList;
import com.yahoo.component.chain.Chain;
+import com.yahoo.container.QrSearchersConfig;
+import com.yahoo.container.handler.VipStatus;
import com.yahoo.container.protect.Error;
import com.yahoo.language.simple.SimpleLinguistics;
import com.yahoo.prelude.fastsearch.ClusterParams;
@@ -12,6 +14,8 @@ import com.yahoo.prelude.fastsearch.SummaryParameters;
import com.yahoo.search.Query;
import com.yahoo.search.Result;
import com.yahoo.search.Searcher;
+import com.yahoo.search.dispatch.Dispatcher;
+import com.yahoo.search.dispatch.rpc.RpcResourcePool;
import com.yahoo.search.dispatch.searchcluster.Node;
import com.yahoo.search.grouping.GroupingRequest;
import com.yahoo.search.grouping.request.AllOperation;
@@ -30,6 +34,7 @@ import java.util.logging.Logger;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
/**
@@ -136,4 +141,21 @@ public class FastSearcherTestCase {
assertForceSinglePassIs(expected, child);
}
+ @Test
+ public void testDispatchReconfig() {
+ String clusterName = "a";
+ var b = new QrSearchersConfig.Builder();
+ var searchClusterB = new QrSearchersConfig.Searchcluster.Builder();
+ searchClusterB.name(clusterName);
+ b.searchcluster(searchClusterB);
+ VipStatus vipStatus = new VipStatus(b.build());
+ List<Node> nodes_1 = ImmutableList.of(new Node(0, "host0", 0));
+ RpcResourcePool rpcPool_1 = new RpcResourcePool(MockDispatcher.toDispatchConfig(nodes_1));
+ Dispatcher dispatch_1 = MockDispatcher.create(nodes_1, rpcPool_1, 1, vipStatus);
+ vipStatus.addToRotation(clusterName);
+ assertTrue(vipStatus.isInRotation());
+ dispatch_1.deconstruct();
+ assertTrue(vipStatus.isInRotation()); //Verify that deconstruct does not touch vipstatus
+ }
+
}
diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/MockDispatcher.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/MockDispatcher.java
index d1e04b26c15..440e3b8d78f 100644
--- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/MockDispatcher.java
+++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/MockDispatcher.java
@@ -34,7 +34,7 @@ class MockDispatcher extends Dispatcher {
super(searchCluster, dispatchConfig, invokerFactory, new MockMetric());
}
- private static DispatchConfig toDispatchConfig(List<Node> nodes) {
+ static DispatchConfig toDispatchConfig(List<Node> nodes) {
DispatchConfig.Builder dispatchConfigBuilder = new DispatchConfig.Builder();
int key = 0;
for (Node node : nodes) {