diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2021-10-21 17:48:19 +0200 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2021-10-21 17:48:19 +0200 |
commit | 9e2cbe370e498fe0a89c8abae2a8b23344cf3f6a (patch) | |
tree | faf8464e04acf1a943a2b751f3745a2c74c1dc29 /container-core/src/main/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandler.java | |
parent | 56c3fc7c2a3b7e317e79593aa56ed2d03472cbde (diff) |
Revert "Merge pull request #19686 from vespa-engine/jonmv/revert-streamed-visits"
This reverts commit 56c3fc7c2a3b7e317e79593aa56ed2d03472cbde, reversing
changes made to 367dae08c390833a54c1bae11282df5a7e056d16.
Diffstat (limited to 'container-core/src/main/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandler.java')
-rw-r--r-- | container-core/src/main/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandler.java | 80 |
1 files changed, 0 insertions, 80 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandler.java b/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandler.java index 0bfe4afe07d..0c3c1e2120b 100644 --- a/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandler.java +++ b/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandler.java @@ -10,9 +10,6 @@ import com.yahoo.jdisc.handler.ContentChannel; import com.yahoo.jdisc.handler.UnsafeContentInputStream; import com.yahoo.jdisc.handler.ResponseHandler; -import java.io.InterruptedIOException; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.atomic.AtomicLong; import java.util.logging.Level; import java.io.IOException; @@ -253,81 +250,4 @@ public abstract class ThreadedHttpRequestHandler extends ThreadedRequestHandler } - /** - * @author baldersheim - */ - static class MaxPendingContentChannelOutputStream extends ContentChannelOutputStream { - private final long maxPending; - private final AtomicLong sent = new AtomicLong(0); - private final AtomicLong acked = new AtomicLong(0); - - public MaxPendingContentChannelOutputStream(ContentChannel endpoint, long maxPending) { - super(endpoint); - this.maxPending = maxPending; - } - - private long pendingBytes() { - return sent.get() - acked.get(); - } - - private class TrackCompletion implements CompletionHandler { - - private final long written; - private final AtomicBoolean replied = new AtomicBoolean(false); - - TrackCompletion(long written) { - this.written = written; - sent.addAndGet(written); - } - - @Override - public void completed() { - if ( ! replied.getAndSet(true)) { - acked.addAndGet(written); - } - } - - @Override - public void failed(Throwable t) { - if ( ! replied.getAndSet(true)) { - acked.addAndGet(written); - } - } - } - - @Override - public void send(ByteBuffer src) throws IOException { - try { - stallWhilePendingAbove(maxPending); - } catch (InterruptedException ignored) { - throw new InterruptedIOException("Interrupted waiting for IO"); - } - CompletionHandler pendingTracker = new TrackCompletion(src.remaining()); - try { - send(src, pendingTracker); - } catch (Throwable throwable) { - pendingTracker.failed(throwable); - throw throwable; - } - } - - private void stallWhilePendingAbove(long pending) throws InterruptedException { - while (pendingBytes() > pending) { - Thread.sleep(1); - } - } - - @Override - public void flush() throws IOException { - super.flush(); - try { - stallWhilePendingAbove(0); - } - catch (InterruptedException e) { - throw new InterruptedIOException("Interrupted waiting for IO"); - } - } - - } - } |