From 8ef00479bef03541464a545ceeb6273fc602e591 Mon Sep 17 00:00:00 2001 From: Olli Virtanen Date: Mon, 10 Sep 2018 15:56:57 +0200 Subject: DistributionKey moved from Backend to CloseableChannel --- .../src/main/java/com/yahoo/fs4/mplex/Backend.java | 11 ++--------- .../src/main/java/com/yahoo/fs4/mplex/FS4Channel.java | 4 ---- .../java/com/yahoo/prelude/fastsearch/FS4ResourcePool.java | 8 +------- .../main/java/com/yahoo/prelude/fastsearch/FastSearcher.java | 2 +- .../main/java/com/yahoo/search/dispatch/CloseableChannel.java | 8 +++++++- .../java/com/yahoo/search/dispatch/DispatchedChannel.java | 2 +- .../src/main/java/com/yahoo/search/dispatch/Dispatcher.java | 3 ++- .../com/yahoo/prelude/fastsearch/test/FastSearcherTester.java | 2 +- .../yahoo/prelude/fastsearch/test/fs4mock/MockBackend.java | 9 +++------ .../prelude/fastsearch/test/fs4mock/MockFS4ResourcePool.java | 6 +++--- 10 files changed, 21 insertions(+), 34 deletions(-) (limited to 'container-search/src') diff --git a/container-search/src/main/java/com/yahoo/fs4/mplex/Backend.java b/container-search/src/main/java/com/yahoo/fs4/mplex/Backend.java index 3eabc3c6a6c..2a90e746378 100644 --- a/container-search/src/main/java/com/yahoo/fs4/mplex/Backend.java +++ b/container-search/src/main/java/com/yahoo/fs4/mplex/Backend.java @@ -61,12 +61,11 @@ public class Backend implements ConnectionFactory { private final ConnectionPool connectionPool; private final PacketDumper packetDumper; private final AtomicInteger connectionCount = new AtomicInteger(0); - private final Optional distributionKey; /** * For unit testing. do not use */ - protected Backend(Optional distributionKey) { + protected Backend() { listeners = null; host = null; port = 0; @@ -74,15 +73,13 @@ public class Backend implements ConnectionFactory { packetDumper = null; address = null; connectionPool = new ConnectionPool(); - this.distributionKey = distributionKey; } public Backend(String host, int port, String serverDiscriminator, ListenerPool listenerPool, - ConnectionPool connectionPool, - Optional distributionKey) { + ConnectionPool connectionPool) { String fileNamePattern = "qrs." + serverDiscriminator + '.' + host + ":" + port + ".%s" + ".dump"; packetDumper = new PacketDumper(new File(Defaults.getDefaults().underVespaHome("logs/vespa/qrs/")), fileNamePattern); @@ -92,7 +89,6 @@ public class Backend implements ConnectionFactory { this.port = port; address = new InetSocketAddress(host, port); this.connectionPool = connectionPool; - this.distributionKey = distributionKey; } private void logWarning(String attemptDescription, Exception e) { @@ -103,9 +99,6 @@ public class Backend implements ConnectionFactory { log.log(Level.INFO, "Exception on " + attemptDescription + " '" + host + ":" + port + "': " + Exceptions.toMessageString(e)); } - /** Returns the distribution key of the content node this represents, or empty if it is a dispatch node */ - public Optional distributionKey() { return distributionKey; } - // ============================================================ // ==== connection pool stuff // ============================================================ diff --git a/container-search/src/main/java/com/yahoo/fs4/mplex/FS4Channel.java b/container-search/src/main/java/com/yahoo/fs4/mplex/FS4Channel.java index 237b0cdb8e2..de4d9c9fe8b 100644 --- a/container-search/src/main/java/com/yahoo/fs4/mplex/FS4Channel.java +++ b/container-search/src/main/java/com/yahoo/fs4/mplex/FS4Channel.java @@ -4,7 +4,6 @@ package com.yahoo.fs4.mplex; import java.io.IOException; import java.util.ArrayList; import java.util.List; -import java.util.Optional; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; @@ -67,9 +66,6 @@ public class FS4Channel { return channelId; } - /** Returns the distribution key of the content node this represents, or empty if it is a dispatch node */ - public Optional distributionKey() { return backend == null ? Optional.empty() : backend.distributionKey(); } - /** * Closes the channel */ diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FS4ResourcePool.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FS4ResourcePool.java index e933f4857b3..51b3146a609 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FS4ResourcePool.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FS4ResourcePool.java @@ -9,12 +9,9 @@ import com.yahoo.container.search.Fs4Config; import com.yahoo.fs4.mplex.Backend; import com.yahoo.fs4.mplex.ConnectionPool; import com.yahoo.fs4.mplex.ListenerPool; -import com.yahoo.io.Connection; -import java.io.IOException; import java.util.HashMap; import java.util.Map; -import java.util.Optional; import java.util.Timer; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -61,14 +58,11 @@ public class FS4ResourcePool extends AbstractComponent { } public Backend getBackend(String host, int port) { - return getBackend(host, port, Optional.empty()); - } - public Backend getBackend(String host, int port, Optional distributionKey) { String key = host + ":" + port; synchronized (connectionPoolMap) { Backend pool = connectionPoolMap.get(key); if (pool == null) { - pool = new Backend(host, port, Server.get().getServerDiscriminator(), listeners, new ConnectionPool(timer), distributionKey); + pool = new Backend(host, port, Server.get().getServerDiscriminator(), listeners, new ConnectionPool(timer)); connectionPoolMap.put(key, pool); } return pool; diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java index 336efcdfbc3..333d3970cc4 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java @@ -239,7 +239,7 @@ public class FastSearcher extends VespaBackEndSearcher { // Dispatch directly to the single, local search node query.trace(false, 2, "Dispatching directly to ", directDispatchRecipient.get()); return new CloseableChannel(fs4ResourcePool.getBackend(directDispatchRecipient.get().hostname(), - directDispatchRecipient.get().fs4port(), Optional.of(directDispatchRecipient.get().key()))); + directDispatchRecipient.get().fs4port()), Optional.of(directDispatchRecipient.get().key())); } /** diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/CloseableChannel.java b/container-search/src/main/java/com/yahoo/search/dispatch/CloseableChannel.java index 838afa0c7fc..643b8f81318 100644 --- a/container-search/src/main/java/com/yahoo/search/dispatch/CloseableChannel.java +++ b/container-search/src/main/java/com/yahoo/search/dispatch/CloseableChannel.java @@ -17,9 +17,15 @@ import java.util.Optional; */ public class CloseableChannel implements Closeable { private FS4Channel channel; + private final Optional distributionKey; public CloseableChannel(Backend backend) { + this(backend, Optional.empty()); + } + + public CloseableChannel(Backend backend, Optional distributionKey) { this.channel = backend.openChannel(); + this.distributionKey = distributionKey; } public void setQuery(Query query) { @@ -35,7 +41,7 @@ public class CloseableChannel implements Closeable { } public Optional distributionKey() { - return channel.distributionKey(); + return distributionKey; } @Override diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/DispatchedChannel.java b/container-search/src/main/java/com/yahoo/search/dispatch/DispatchedChannel.java index 00c59fbc979..d005d9491d5 100644 --- a/container-search/src/main/java/com/yahoo/search/dispatch/DispatchedChannel.java +++ b/container-search/src/main/java/com/yahoo/search/dispatch/DispatchedChannel.java @@ -18,7 +18,7 @@ public class DispatchedChannel extends CloseableChannel { private boolean groupAllocated = true; public DispatchedChannel(FS4ResourcePool fs4ResourcePool, LoadBalancer loadBalancer, Group group, Node node) { - super(fs4ResourcePool.getBackend(node.hostname(), node.fs4port(), Optional.of(node.key()))); + super(fs4ResourcePool.getBackend(node.hostname(), node.fs4port()), Optional.of(node.key())); this.loadBalancer = loadBalancer; this.group = group; diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java b/container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java index be7cfea2017..c383b681558 100644 --- a/container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java +++ b/container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java @@ -288,7 +288,8 @@ public class Dispatcher extends AbstractComponent { return groupInCluster.flatMap(group -> { if(group.nodes().size() == 1) { - query.trace(false, 2, "Dispatching directly (anywhere) to ", group); + SearchCluster.Node node = group.nodes().iterator().next(); + query.trace(false, 2, "Dispatching internally to ", group, " (", node.toString(), ")"); return Optional.of(new DispatchedChannel(fs4ResourcePool, loadBalancer, group)); } else { loadBalancer.releaseGroup(group); diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTester.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTester.java index 4f99f06986a..4f6d2d88917 100644 --- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTester.java +++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTester.java @@ -52,7 +52,7 @@ class FastSearcherTester { vipStatus = new VipStatus(clustersStatus); mockFS4ResourcePool = new MockFS4ResourcePool(); mockDispatcher = new MockDispatcher(searchNodes, mockFS4ResourcePool, containerClusterSize, vipStatus); - fastSearcher = new FastSearcher(new MockBackend(Optional.empty(), selfHostname, 0L, true), + fastSearcher = new FastSearcher(new MockBackend(selfHostname, 0L, true), mockFS4ResourcePool, mockDispatcher, new SummaryParameters(null), diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/fs4mock/MockBackend.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/fs4mock/MockBackend.java index 01ae9aa8f33..29b28112797 100644 --- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/fs4mock/MockBackend.java +++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/fs4mock/MockBackend.java @@ -4,9 +4,6 @@ package com.yahoo.prelude.fastsearch.test.fs4mock; import com.yahoo.fs4.mplex.Backend; import com.yahoo.fs4.mplex.FS4Channel; -import java.util.Optional; -import java.util.function.Supplier; - /** * @author bratseth */ @@ -20,11 +17,11 @@ public class MockBackend extends Backend { private MockFSChannel channel = null; public MockBackend() { - this(Optional.empty(), "", 0L, true); + this("", 0L, true); } - public MockBackend(Optional distributionKey, String hostname, long activeDocumentsInBackend, boolean working) { - super(distributionKey); + public MockBackend(String hostname, long activeDocumentsInBackend, boolean working) { + super(); this.hostname = hostname; this.activeDocumentsInBackend = activeDocumentsInBackend; this.working = working; diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/fs4mock/MockFS4ResourcePool.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/fs4mock/MockFS4ResourcePool.java index 9b5f4b99f20..7bb161acc07 100644 --- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/fs4mock/MockFS4ResourcePool.java +++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/fs4mock/MockFS4ResourcePool.java @@ -26,12 +26,12 @@ public class MockFS4ResourcePool extends FS4ResourcePool { } @Override - public Backend getBackend(String hostname, int port, Optional distributionKey) { + public Backend getBackend(String hostname, int port) { countRequest(hostname + ":" + port); if (nonRespondingBackends.contains(hostname)) - return new MockBackend(distributionKey, hostname, 0L, false); + return new MockBackend(hostname, 0L, false); else - return new MockBackend(distributionKey, hostname, activeDocumentsInBackend.getOrDefault(hostname, 0L), true); + return new MockBackend(hostname, activeDocumentsInBackend.getOrDefault(hostname, 0L), true); } /** -- cgit v1.2.3