Skip to content

Commit 489cf0a

Browse files
committed
f Disable pipelining for {put,delete}_object
1 parent bbfdf43 commit 489cf0a

File tree

1 file changed

+19
-14
lines changed

1 file changed

+19
-14
lines changed

src/client.rs

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -87,15 +87,17 @@ impl<R: RetryPolicy<E = VssError>> VssClient<R> {
8787
let res = retry(
8888
|| async {
8989
let url = format!("{}/getObject", self.base_url);
90-
self.post_request(request, &url).await.and_then(|response: GetObjectResponse| {
91-
if response.value.is_none() {
92-
Err(VssError::InternalServerError(
90+
self.post_request(request, &url, true).await.and_then(
91+
|response: GetObjectResponse| {
92+
if response.value.is_none() {
93+
Err(VssError::InternalServerError(
9394
"VSS Server API Violation, expected value in GetObjectResponse but found none".to_string(),
9495
))
95-
} else {
96-
Ok(response)
97-
}
98-
})
96+
} else {
97+
Ok(response)
98+
}
99+
},
100+
)
99101
},
100102
&self.retry_policy,
101103
)
@@ -123,7 +125,7 @@ impl<R: RetryPolicy<E = VssError>> VssClient<R> {
123125
let res = retry(
124126
|| async {
125127
let url = format!("{}/putObjects", self.base_url);
126-
self.post_request(request, &url).await
128+
self.post_request(request, &url, false).await
127129
},
128130
&self.retry_policy,
129131
)
@@ -149,7 +151,7 @@ impl<R: RetryPolicy<E = VssError>> VssClient<R> {
149151
let res = retry(
150152
|| async {
151153
let url = format!("{}/deleteObject", self.base_url);
152-
self.post_request(request, &url).await
154+
self.post_request(request, &url, false).await
153155
},
154156
&self.retry_policy,
155157
)
@@ -177,7 +179,7 @@ impl<R: RetryPolicy<E = VssError>> VssClient<R> {
177179
let res = retry(
178180
|| async {
179181
let url = format!("{}/listKeyVersions", self.base_url);
180-
self.post_request(request, &url).await
182+
self.post_request(request, &url, true).await
181183
},
182184
&self.retry_policy,
183185
)
@@ -189,7 +191,7 @@ impl<R: RetryPolicy<E = VssError>> VssClient<R> {
189191
}
190192

191193
async fn post_request<Rq: Message, Rs: Message + Default>(
192-
&self, request: &Rq, url: &str,
194+
&self, request: &Rq, url: &str, enable_pipelining: bool,
193195
) -> Result<Rs, VssError> {
194196
let request_body = request.encode_to_vec();
195197
let headers = self
@@ -198,13 +200,16 @@ impl<R: RetryPolicy<E = VssError>> VssClient<R> {
198200
.await
199201
.map_err(|e| VssError::AuthError(e.to_string()))?;
200202

201-
let http_request = bitreq::post(url)
203+
let mut http_request = bitreq::post(url)
202204
.with_header(CONTENT_TYPE, APPLICATION_OCTET_STREAM)
203205
.with_headers(headers)
204206
.with_body(request_body)
205207
.with_timeout(DEFAULT_TIMEOUT_SECS)
206-
.with_max_body_size(Some(MAX_RESPONSE_BODY_SIZE))
207-
.with_pipelining();
208+
.with_max_body_size(Some(MAX_RESPONSE_BODY_SIZE));
209+
210+
if enable_pipelining {
211+
http_request = http_request.with_pipelining();
212+
}
208213

209214
let response = self.client.send_async(http_request).await?;
210215

0 commit comments

Comments
 (0)