aboutsummaryrefslogtreecommitdiffstats
path: root/jdisc_http_service
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2020-10-14 15:48:11 +0200
committerJon Marius Venstad <venstad@gmail.com>2020-10-14 15:48:11 +0200
commitad379f928f476f92a235019e149074c400362105 (patch)
tree2900b3d2c95550e69ef76bf6b751be43dd91a09a /jdisc_http_service
parent3ad3556fd9c5d1162ad948916872b6122f8f4452 (diff)
Update expectation to complete writing stuff to request content channel earlier
Diffstat (limited to 'jdisc_http_service')
-rw-r--r--jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletRequestReader.java56
1 files changed, 28 insertions, 28 deletions
diff --git a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletRequestReader.java b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletRequestReader.java
index 9e7912f2dc1..1882448757a 100644
--- a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletRequestReader.java
+++ b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletRequestReader.java
@@ -111,37 +111,37 @@ class ServletRequestReader implements ReadListener {
public void onDataAvailable() throws IOException {
while (servletInputStream.isReady()) {
final byte[] buffer = new byte[BUFFER_SIZE_BYTES];
- final int numBytesRead = servletInputStream.read(buffer);
- if (numBytesRead < 0) {
- // End of stream; there should be no more data available, ever.
- return;
+ int numBytesRead;
+
+ synchronized (monitor) {
+ numBytesRead = servletInputStream.read(buffer);
+ if (numBytesRead < 0) {
+ // End of stream; there should be no more data available, ever.
+ return;
+ }
+ if (state != State.READING) {
+ //We have a failure, so no point in giving the buffer to the user.
+ assert finishedFuture.isCompletedExceptionally();
+ return;
+ }
+ //wait for both
+ // - requestContentChannel.write to finish
+ // - the write completion handler to be called
+ numberOfOutstandingUserCalls += 2;
+ bytesRead += numBytesRead;
}
- writeRequestContent(ByteBuffer.wrap(buffer, 0, numBytesRead));
- }
- }
- private void writeRequestContent(final ByteBuffer buf) {
- synchronized (monitor) {
- if (state != State.READING) {
- //We have a failure, so no point in giving the buffer to the user.
- assert finishedFuture.isCompletedExceptionally();
- return;
+ try {
+ requestContentChannel.write(ByteBuffer.wrap(buffer, 0, numBytesRead), writeCompletionHandler);
+ metricReporter.successfulRead(numBytesRead);
+ }
+ catch (Throwable t) {
+ finishedFuture.completeExceptionally(t);
+ }
+ finally {
+ //decrease due to this method completing.
+ decreaseOutstandingUserCallsAndCloseRequestContentChannelConditionally();
}
- //wait for both
- // - requestContentChannel.write to finish
- // - the write completion handler to be called
- numberOfOutstandingUserCalls += 2;
- }
- try {
- int bytesReceived = buf.remaining();
- requestContentChannel.write(buf, writeCompletionHandler);
- metricReporter.successfulRead(bytesReceived);
- bytesRead += bytesReceived;
- } catch (Throwable t) {
- finishedFuture.completeExceptionally(t);
- } finally {
- //decrease due to this method completing.
- decreaseOutstandingUserCallsAndCloseRequestContentChannelConditionally();
}
}