From 8e57505ad9fd020f2f0241c06e5b57f20da248d2 Mon Sep 17 00:00:00 2001 From: Bjørn Christian Seime Date: Tue, 11 May 2021 21:44:26 +0200 Subject: Janitor threadpool must be available across JettyHttpServer instances --- .../jdisc/http/server/jetty/ServletOutputStreamWriter.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletOutputStreamWriter.java') diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletOutputStreamWriter.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletOutputStreamWriter.java index b4d03385c3b..696fd2d51ad 100644 --- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletOutputStreamWriter.java +++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletOutputStreamWriter.java @@ -12,7 +12,6 @@ import java.util.ArrayList; import java.util.Deque; import java.util.Optional; import java.util.concurrent.CompletableFuture; -import java.util.concurrent.Executor; import java.util.function.Consumer; import java.util.logging.Level; import java.util.logging.Logger; @@ -54,7 +53,7 @@ public class ServletOutputStreamWriter { // GuardedBy("state") private final ServletOutputStream outputStream; - private final Executor executor; + private final Janitor janitor; // GuardedBy("monitor") private final Deque responseContentQueue = new ArrayDeque<>(); @@ -70,9 +69,9 @@ public class ServletOutputStreamWriter { final CompletableFuture finishedFuture = new CompletableFuture<>(); - public ServletOutputStreamWriter(ServletOutputStream outputStream, Executor executor, RequestMetricReporter metricReporter) { + public ServletOutputStreamWriter(ServletOutputStream outputStream, Janitor janitor, RequestMetricReporter metricReporter) { this.outputStream = outputStream; - this.executor = executor; + this.janitor = janitor; this.metricReporter = metricReporter; } @@ -96,7 +95,7 @@ public class ServletOutputStreamWriter { synchronized (monitor) { if (state == State.FINISHED_OR_ERROR) { - executor.execute(() -> handler.failed(new IllegalStateException("ContentChannel already closed."))); + janitor.scheduleTask(() -> handler.failed(new IllegalStateException("ContentChannel already closed."))); return; } responseContentQueue.addLast(new ResponseContentPart(buf, handler)); @@ -207,8 +206,7 @@ public class ServletOutputStreamWriter { runCompletionHandler_logOnExceptions( () -> responseContentPart.handler.failed(failReason)); - executor.execute( - () -> failedParts.forEach(failCompletionHandler)); + janitor.scheduleTask(() -> failedParts.forEach(failCompletionHandler)); } private void writeBufferToOutputStream(ResponseContentPart contentPart) throws Throwable { -- cgit v1.2.3