Buffer writes in JettyClientHttpRequest
This commit ensures that not every OutputStream.write gets written as a separate chunk, by buffering the written data in a BufferedOutputStream. In some cases, a large quantity of small writes would result in many sent chunks. Closes gh-31361
This commit is contained in:
parent
0839f5b749
commit
486503bd31
|
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
package org.springframework.http.client;
|
package org.springframework.http.client;
|
||||||
|
|
||||||
|
import java.io.BufferedOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.io.UncheckedIOException;
|
import java.io.UncheckedIOException;
|
||||||
|
|
@ -44,6 +45,9 @@ import org.springframework.util.StreamUtils;
|
||||||
*/
|
*/
|
||||||
class JettyClientHttpRequest extends AbstractStreamingClientHttpRequest {
|
class JettyClientHttpRequest extends AbstractStreamingClientHttpRequest {
|
||||||
|
|
||||||
|
private static final int CHUNK_SIZE = 1024;
|
||||||
|
|
||||||
|
|
||||||
private final Request request;
|
private final Request request;
|
||||||
|
|
||||||
private final long readTimeout;
|
private final long readTimeout;
|
||||||
|
|
@ -85,7 +89,8 @@ class JettyClientHttpRequest extends AbstractStreamingClientHttpRequest {
|
||||||
OutputStreamRequestContent requestContent = new OutputStreamRequestContent(contentType);
|
OutputStreamRequestContent requestContent = new OutputStreamRequestContent(contentType);
|
||||||
this.request.body(requestContent)
|
this.request.body(requestContent)
|
||||||
.send(responseListener);
|
.send(responseListener);
|
||||||
try (OutputStream outputStream = requestContent.getOutputStream()) {
|
try (OutputStream outputStream =
|
||||||
|
new BufferedOutputStream(requestContent.getOutputStream(), CHUNK_SIZE)) {
|
||||||
body.writeTo(StreamUtils.nonClosing(outputStream));
|
body.writeTo(StreamUtils.nonClosing(outputStream));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue