aboutsummaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2021-12-06 14:35:27 +0100
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2021-12-06 17:23:01 +0100
commit2c8d19b82de5ec4b47a5eb4ab566bbcb1725d118 (patch)
tree1d535de3b8621d827c6657edfb1eb26fa803410d /container-search/src/main/java
parentffdbd053a2b57383b2d463e8050394776b14abdf (diff)
Deprecate public APIs using Guava's ListenableFuture
Public methods: - com.yahoo.processing.rendering.Renderer.render() - com.yahoo.search.handler.HttpSearchResponse.waitableRender() - com.yahoo.processing.rendering.AsynchronousSectionedRenderer.renderBeforeHandover()
Diffstat (limited to 'container-search/src/main/java')
-rw-r--r--container-search/src/main/java/com/yahoo/search/handler/HttpSearchResponse.java26
-rw-r--r--container-search/src/main/java/com/yahoo/search/rendering/Renderer.java13
2 files changed, 28 insertions, 11 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/handler/HttpSearchResponse.java b/container-search/src/main/java/com/yahoo/search/handler/HttpSearchResponse.java
index 5c897245e64..64e7403fa1a 100644
--- a/container-search/src/main/java/com/yahoo/search/handler/HttpSearchResponse.java
+++ b/container-search/src/main/java/com/yahoo/search/handler/HttpSearchResponse.java
@@ -3,6 +3,7 @@ package com.yahoo.search.handler;
import com.google.common.util.concurrent.ListenableFuture;
import com.yahoo.collections.ListMap;
+import com.yahoo.concurrent.CompletableFutures;
import com.yahoo.container.handler.Coverage;
import com.yahoo.container.handler.Timing;
import com.yahoo.container.jdisc.ExtendedResponse;
@@ -25,6 +26,7 @@ import java.io.OutputStream;
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.CompletableFuture;
/**
* Wrap the result of a query as an HTTP response.
@@ -75,20 +77,36 @@ public class HttpSearchResponse extends ExtendedResponse {
}
}
+ /** @deprecated Use {@link #asyncRender(OutputStream)} instead */
+ @Deprecated(forRemoval = true, since = "7")
public ListenableFuture<Boolean> waitableRender(OutputStream stream) throws IOException {
return waitableRender(result, query, rendererCopy, stream);
}
+ /** @deprecated Use {@link #asyncRender(Result, Query, Renderer, OutputStream)} instead */
+ @Deprecated(forRemoval = true, since = "7")
+ @SuppressWarnings("removal")
public static ListenableFuture<Boolean> waitableRender(Result result,
Query query,
Renderer<Result> renderer,
OutputStream stream) throws IOException {
+ return CompletableFutures.toGuavaListenableFuture(asyncRender(result, query, renderer, stream));
+ }
+
+ public CompletableFuture<Boolean> asyncRender(OutputStream stream) {
+ return asyncRender(result, query, rendererCopy, stream);
+ }
+
+ public static CompletableFuture<Boolean> asyncRender(Result result,
+ Query query,
+ Renderer<Result> renderer,
+ OutputStream stream) {
SearchResponse.trimHits(result);
SearchResponse.removeEmptySummaryFeatureFields(result);
- return renderer.render(stream, result, query.getModel().getExecution(), query);
-
+ return renderer.renderResponse(stream, result, query.getModel().getExecution(), query);
}
+
@Override
public void render(OutputStream output, ContentChannel networkChannel, CompletionHandler handler) throws IOException {
if (rendererCopy instanceof AsynchronousSectionedRenderer) {
@@ -98,9 +116,9 @@ public class HttpSearchResponse extends ExtendedResponse {
try {
try {
long nanoStart = System.nanoTime();
- ListenableFuture<Boolean> promise = waitableRender(output);
+ CompletableFuture<Boolean> promise = asyncRender(output);
if (metric != null) {
- promise.addListener(new RendererLatencyReporter(nanoStart), Runnable::run);
+ promise.whenComplete((__, ___) -> new RendererLatencyReporter(nanoStart).run());
}
} finally {
if (!(rendererCopy instanceof AsynchronousSectionedRenderer)) {
diff --git a/container-search/src/main/java/com/yahoo/search/rendering/Renderer.java b/container-search/src/main/java/com/yahoo/search/rendering/Renderer.java
index b8a7f0d1978..6ff8f003f7e 100644
--- a/container-search/src/main/java/com/yahoo/search/rendering/Renderer.java
+++ b/container-search/src/main/java/com/yahoo/search/rendering/Renderer.java
@@ -1,19 +1,18 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.rendering;
-import com.yahoo.search.Query;
-import com.yahoo.search.Result;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.SettableFuture;
import com.yahoo.io.ByteWriter;
import com.yahoo.processing.Request;
import com.yahoo.processing.execution.Execution;
+import com.yahoo.search.Query;
+import com.yahoo.search.Result;
import java.io.IOException;
import java.io.OutputStream;
import java.io.Writer;
import java.nio.charset.Charset;
import java.nio.charset.CharsetEncoder;
+import java.util.concurrent.CompletableFuture;
/**
* Renders a search result to a writer synchronously
@@ -37,7 +36,7 @@ abstract public class Renderer extends com.yahoo.processing.rendering.Renderer<R
* @return a future which is always completed to true
*/
@Override
- public final ListenableFuture<Boolean> render(OutputStream stream, Result response, Execution execution, Request request) {
+ public final CompletableFuture<Boolean> renderResponse(OutputStream stream, Result response, Execution execution, Request request) {
Writer writer = null;
try {
writer = createWriter(stream, response);
@@ -50,8 +49,8 @@ abstract public class Renderer extends com.yahoo.processing.rendering.Renderer<R
if (writer != null)
try { writer.close(); } catch (IOException e2) {};
}
- SettableFuture<Boolean> completed = SettableFuture.create();
- completed.set(true);
+ CompletableFuture<Boolean> completed = new CompletableFuture<>();
+ completed.complete(true);
return completed;
}