summaryrefslogtreecommitdiffstats
path: root/container-core
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-10-06 13:09:11 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2021-10-06 13:13:03 +0200
commit4a9c0da4af0809ecdba2bf8cebef090c5905b9c2 (patch)
tree58bd0525f79d179903e7518a01e3bfc404637cd5 /container-core
parentf63d33eb7a47c3bfd80229098a71eae1b3b48300 (diff)
- GC unused AsyncCompleteListener.java
- Avoid using anonymous constructor.
Diffstat (limited to 'container-core')
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/AsyncCompleteListener.java22
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpRequestDispatch.java75
2 files changed, 37 insertions, 60 deletions
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/AsyncCompleteListener.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/AsyncCompleteListener.java
deleted file mode 100644
index 7dba217e01c..00000000000
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/AsyncCompleteListener.java
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.jdisc.http.server.jetty;
-
-import javax.servlet.AsyncEvent;
-import javax.servlet.AsyncListener;
-import java.io.IOException;
-
-/**
- * Interface for async listeners only interested in onComplete.
- * @author Tony Vaagenes
- */
-@FunctionalInterface
-interface AsyncCompleteListener extends AsyncListener {
- @Override
- default void onTimeout(AsyncEvent event) throws IOException {}
-
- @Override
- default void onError(AsyncEvent event) throws IOException {}
-
- @Override
- default void onStartAsync(AsyncEvent event) throws IOException {}
-}
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpRequestDispatch.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpRequestDispatch.java
index 0b7e27b9598..512d78d4537 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpRequestDispatch.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpRequestDispatch.java
@@ -59,6 +59,8 @@ class HttpRequestDispatch {
private final ServletResponseController servletResponseController;
private final RequestHandler requestHandler;
private final RequestMetricReporter metricReporter;
+ private final BiConsumer<Void, Throwable> completeRequestCallback;
+ private final AtomicBoolean completeRequestCalled = new AtomicBoolean(false);
public HttpRequestDispatch(JDiscContext jDiscContext,
AccessLogEntry accessLogEntry,
@@ -80,6 +82,7 @@ class HttpRequestDispatch {
this.async = servletRequest.startAsync();
async.setTimeout(0);
metricReporter.uriLength(jettyRequest.getOriginalURI().length());
+ completeRequestCallback = this::handleCompleteRequestCallback;
}
public void dispatch() throws IOException {
@@ -103,48 +106,44 @@ class HttpRequestDispatch {
}
}
- private final BiConsumer<Void, Throwable> completeRequestCallback;
+
+ private void handleCompleteRequestCallback(Void result, Throwable error)
{
- AtomicBoolean completeRequestCalled = new AtomicBoolean(false);
- HttpRequestDispatch parent = this; //used to avoid binding uninitialized variables
-
- completeRequestCallback = (result, error) -> {
- boolean alreadyCalled = completeRequestCalled.getAndSet(true);
- if (alreadyCalled) {
- AssertionError e = new AssertionError("completeRequest called more than once");
- log.log(Level.WARNING, "Assertion failed.", e);
- throw e;
- }
+ boolean alreadyCalled = completeRequestCalled.getAndSet(true);
+ if (alreadyCalled) {
+ AssertionError e = new AssertionError("completeRequest called more than once");
+ log.log(Level.WARNING, "Assertion failed.", e);
+ throw e;
+ }
- boolean reportedError = false;
-
- if (error != null) {
- if (isErrorOfType(error, EofException.class, IOException.class)) {
- log.log(Level.FINE,
- error,
- () -> "Network connection was unexpectedly terminated: " + parent.jettyRequest.getRequestURI());
- parent.metricReporter.prematurelyClosed();
- } else if (isErrorOfType(error, TimeoutException.class)) {
- log.log(Level.FINE,
- error,
- () -> "Request/stream was timed out by Jetty: " + parent.jettyRequest.getRequestURI());
- } else if (!isErrorOfType(error, OverloadException.class, BindingNotFoundException.class, RequestException.class)) {
- log.log(Level.WARNING, "Request failed: " + parent.jettyRequest.getRequestURI(), error);
- }
- reportedError = true;
- parent.metricReporter.failedResponse();
- } else {
- parent.metricReporter.successfulResponse();
+ boolean reportedError = false;
+
+ if (error != null) {
+ if (isErrorOfType(error, EofException.class, IOException.class)) {
+ log.log(Level.FINE,
+ error,
+ () -> "Network connection was unexpectedly terminated: " + jettyRequest.getRequestURI());
+ metricReporter.prematurelyClosed();
+ } else if (isErrorOfType(error, TimeoutException.class)) {
+ log.log(Level.FINE,
+ error,
+ () -> "Request/stream was timed out by Jetty: " + jettyRequest.getRequestURI());
+ } else if (!isErrorOfType(error, OverloadException.class, BindingNotFoundException.class, RequestException.class)) {
+ log.log(Level.WARNING, "Request failed: " + jettyRequest.getRequestURI(), error);
}
+ reportedError = true;
+ metricReporter.failedResponse();
+ } else {
+ metricReporter.successfulResponse();
+ }
- try {
- parent.async.complete();
- log.finest(() -> "Request completed successfully: " + parent.jettyRequest.getRequestURI());
- } catch (Throwable throwable) {
- Level level = reportedError ? Level.FINE: Level.WARNING;
- log.log(level, "Async.complete failed", throwable);
- }
- };
+ try {
+ async.complete();
+ log.finest(() -> "Request completed successfully: " + jettyRequest.getRequestURI());
+ } catch (Throwable throwable) {
+ Level level = reportedError ? Level.FINE: Level.WARNING;
+ log.log(level, "Async.complete failed", throwable);
+ }
}
private static void shutdownConnectionGracefullyIfThresholdReached(Request request) {