Skip to content

Commit d7e8fc3

Browse files
andrey-qlogicchingor13
authored andcommitted
---
yaml --- r: 14257 b: refs/heads/autosynth-video-intelligence c: 442b41d h: refs/heads/master i: 14255: 27d562c
1 parent e70d26d commit d7e8fc3

3 files changed

Lines changed: 46 additions & 2 deletions

File tree

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ refs/heads/autosynth-container: f6384095f50b31bfc8208542a49181e158d3681c
117117
refs/heads/autosynth-dataproc: bc74a8841bc1693d7945d991d15979df550b1fd1
118118
refs/heads/autosynth-monitoring: e67db7395a868e5f6ecc3476eb4a91c47abd4234
119119
refs/heads/autosynth-pubsub: fd363d13793a853214eb8193c922b28c54e7a6b3
120-
refs/heads/autosynth-video-intelligence: ccc1532c8356b809236a744fb23562d4c58c6662
120+
refs/heads/autosynth-video-intelligence: 442b41d749f92054cfad656b1bb2f549713d504e
121121
refs/heads/autosynth-vision: d758c43ba2ef4f4f7ad07b722617cb39fe3f29db
122122
refs/heads/spanner: 54a5e197bfe0a004e13c190427f46c3413ab572d
123123
refs/tags/v0.68.0: 9cc799fcf68c82ab431d425fefa58ef615ce8e5b

branches/autosynth-video-intelligence/google-cloud-clients/google-cloud-storage/src/main/java/com/google/cloud/storage/spi/v1/HttpStorageRpc.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -715,14 +715,19 @@ public void write(
715715
int code;
716716
String message;
717717
IOException exception = null;
718+
HttpResponse response = null;
718719
try {
719-
HttpResponse response = httpRequest.execute();
720+
response = httpRequest.execute();
720721
code = response.getStatusCode();
721722
message = response.getStatusMessage();
722723
} catch (HttpResponseException ex) {
723724
exception = ex;
724725
code = ex.getStatusCode();
725726
message = ex.getStatusMessage();
727+
} finally {
728+
if (response != null) {
729+
response.disconnect();
730+
}
726731
}
727732
if (!last && code != 308 || last && !(code == 200 || code == 201)) {
728733
if (exception != null) {

branches/autosynth-video-intelligence/google-cloud-clients/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITStorageTest.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,20 @@
2828
import static org.junit.Assume.assumeFalse;
2929
import static org.junit.Assume.assumeTrue;
3030

31+
import com.google.api.client.http.HttpTransport;
32+
import com.google.api.client.http.apache.ApacheHttpTransport;
3133
import com.google.api.client.util.DateTime;
3234
import com.google.api.gax.paging.Page;
3335
import com.google.auth.ServiceAccountSigner;
36+
import com.google.auth.http.HttpTransportFactory;
3437
import com.google.auth.oauth2.GoogleCredentials;
3538
import com.google.cloud.Identity;
3639
import com.google.cloud.Policy;
3740
import com.google.cloud.ReadChannel;
3841
import com.google.cloud.RestorableState;
42+
import com.google.cloud.TransportOptions;
3943
import com.google.cloud.WriteChannel;
44+
import com.google.cloud.http.HttpTransportOptions;
4045
import com.google.cloud.kms.v1.CreateCryptoKeyRequest;
4146
import com.google.cloud.kms.v1.CreateKeyRingRequest;
4247
import com.google.cloud.kms.v1.CryptoKey;
@@ -111,6 +116,8 @@
111116
import java.util.logging.Logger;
112117
import java.util.zip.GZIPInputStream;
113118
import javax.crypto.spec.SecretKeySpec;
119+
import org.apache.http.impl.client.HttpClients;
120+
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
114121
import org.junit.AfterClass;
115122
import org.junit.BeforeClass;
116123
import org.junit.Test;
@@ -184,6 +191,15 @@ public static void afterClass() throws ExecutionException, InterruptedException
184191
}
185192
}
186193

194+
private static class CustomHttpTransportFactory implements HttpTransportFactory {
195+
@Override
196+
public HttpTransport create() {
197+
PoolingHttpClientConnectionManager manager = new PoolingHttpClientConnectionManager();
198+
manager.setMaxTotal(1);
199+
return new ApacheHttpTransport(HttpClients.createMinimal(manager));
200+
}
201+
}
202+
187203
private static void prepareKmsKeys() throws IOException {
188204
String projectId = remoteStorageHelper.getOptions().getProjectId();
189205
GoogleCredentials credentials = GoogleCredentials.getApplicationDefault();
@@ -1744,6 +1760,29 @@ public void testWriteChannelExistingBlob() throws IOException {
17441760
assertTrue(storage.delete(BUCKET, blobName));
17451761
}
17461762

1763+
@Test(timeout = 5000)
1764+
public void testWriteChannelWithConnectionPool() throws IOException {
1765+
TransportOptions transportOptions =
1766+
HttpTransportOptions.newBuilder()
1767+
.setHttpTransportFactory(new CustomHttpTransportFactory())
1768+
.build();
1769+
Storage storageWithPool =
1770+
StorageOptions.newBuilder().setTransportOptions(transportOptions).build().getService();
1771+
String blobName = "test-custom-pool-management";
1772+
BlobInfo blob = BlobInfo.newBuilder(BUCKET, blobName).build();
1773+
byte[] stringBytes;
1774+
try (WriteChannel writer = storageWithPool.writer(blob)) {
1775+
stringBytes = BLOB_STRING_CONTENT.getBytes(UTF_8);
1776+
writer.write(ByteBuffer.wrap(BLOB_BYTE_CONTENT));
1777+
writer.write(ByteBuffer.wrap(stringBytes));
1778+
}
1779+
try (WriteChannel writer = storageWithPool.writer(blob)) {
1780+
stringBytes = BLOB_STRING_CONTENT.getBytes(UTF_8);
1781+
writer.write(ByteBuffer.wrap(BLOB_BYTE_CONTENT));
1782+
writer.write(ByteBuffer.wrap(stringBytes));
1783+
}
1784+
}
1785+
17471786
@Test
17481787
public void testGetSignedUrl() throws IOException {
17491788
if (storage.getOptions().getCredentials() != null) {

0 commit comments

Comments
 (0)