diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-12-19 08:31:30 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2019-12-19 08:31:30 +0000 |
commit | ae0f989de2585ed10b751ce3340a43fe24c2ef88 (patch) | |
tree | 24d9414155868b00839376369f9698d1ca604ef9 /container-search | |
parent | 18b31ea7d44d149ccd742999b5691402acb19a7b (diff) |
Verify that destruct does not do bad things during destruct.
Diffstat (limited to 'container-search')
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) { |