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;
|
||||
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.io.UncheckedIOException;
|
||||
|
|
@ -44,6 +45,9 @@ import org.springframework.util.StreamUtils;
|
|||
*/
|
||||
class JettyClientHttpRequest extends AbstractStreamingClientHttpRequest {
|
||||
|
||||
private static final int CHUNK_SIZE = 1024;
|
||||
|
||||
|
||||
private final Request request;
|
||||
|
||||
private final long readTimeout;
|
||||
|
|
@ -85,7 +89,8 @@ class JettyClientHttpRequest extends AbstractStreamingClientHttpRequest {
|
|||
OutputStreamRequestContent requestContent = new OutputStreamRequestContent(contentType);
|
||||
this.request.body(requestContent)
|
||||
.send(responseListener);
|
||||
try (OutputStream outputStream = requestContent.getOutputStream()) {
|
||||
try (OutputStream outputStream =
|
||||
new BufferedOutputStream(requestContent.getOutputStream(), CHUNK_SIZE)) {
|
||||
body.writeTo(StreamUtils.nonClosing(outputStream));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue