Delete GCS composite object components Previously we left dangling subobjects. The composite object retains a reference to the components data.
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/ed262f7b Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/ed262f7b Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/ed262f7b Branch: refs/heads/master Commit: ed262f7bd611d6754eb44106aa8d1a8d1abbe05a Parents: c2a22bc Author: Andrew Gaul <[email protected]> Authored: Fri Jun 3 23:30:08 2016 -0700 Committer: Andrew Gaul <[email protected]> Committed: Sat Jun 4 00:23:22 2016 -0700 ---------------------------------------------------------------------- .../blobstore/GoogleCloudStorageBlobStore.java | 19 ++++++++++++++----- ...oogleCloudStorageBlobIntegrationLiveTest.java | 6 +----- 2 files changed, 15 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/ed262f7b/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java ---------------------------------------------------------------------- diff --git a/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java b/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java index 1cb927e..cce5d3c 100644 --- a/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java +++ b/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java @@ -384,9 +384,9 @@ public final class GoogleCloudStorageBlobStore extends BaseBlobStore { @Override public String completeMultipartUpload(MultipartUpload mpu, List<MultipartPart> parts) { - ImmutableList.Builder<GoogleCloudStorageObject> builder = ImmutableList.builder(); + ImmutableList.Builder<GoogleCloudStorageObject> objects = ImmutableList.builder(); for (MultipartPart part : parts) { - builder.add(api.getObjectApi().getObject(mpu.containerName(), + objects.add(api.getObjectApi().getObject(mpu.containerName(), Strings2.urlEncode(getMPUPartName(mpu, part.partNumber())))); } @@ -400,11 +400,20 @@ public final class GoogleCloudStorageBlobStore extends BaseBlobStore { destination.addAcl(controls); } - ComposeObjectTemplate template = ComposeObjectTemplate.builder().fromGoogleCloudStorageObject(builder.build()) + ComposeObjectTemplate template = ComposeObjectTemplate.builder() + .fromGoogleCloudStorageObject(objects.build()) .destination(destination).build(); - return api.getObjectApi().composeObjects(mpu.containerName(), Strings2.urlEncode(mpu.blobName()), template) + String eTag = api.getObjectApi().composeObjects(mpu.containerName(), Strings2.urlEncode(mpu.blobName()), template) .etag(); - // TODO: delete components? + + // remove parts, composite object keeps a reference to them + ImmutableList.Builder<String> builder = ImmutableList.builder(); + for (MultipartPart part : parts) { + builder.add(getMPUPartName(mpu, part.partNumber())); + } + removeBlobs(mpu.containerName(), builder.build()); + + return eTag; } @Override http://git-wip-us.apache.org/repos/asf/jclouds/blob/ed262f7b/providers/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GoogleCloudStorageBlobIntegrationLiveTest.java ---------------------------------------------------------------------- diff --git a/providers/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GoogleCloudStorageBlobIntegrationLiveTest.java b/providers/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GoogleCloudStorageBlobIntegrationLiveTest.java index 8aa3fe1..244076f 100644 --- a/providers/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GoogleCloudStorageBlobIntegrationLiveTest.java +++ b/providers/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/blobstore/integration/GoogleCloudStorageBlobIntegrationLiveTest.java @@ -18,10 +18,8 @@ package org.jclouds.googlecloudstorage.blobstore.integration; import static org.assertj.core.api.Assertions.assertThat; import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNotEquals; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertNull; -import static org.testng.Assert.assertTrue; import java.io.File; import java.io.IOException; @@ -224,9 +222,7 @@ public class GoogleCloudStorageBlobIntegrationLiveTest extends BaseBlobIntegrati addMultipartBlobToContainer(containerName, "const.txt"); long countAfter = blobStore.countBlobs(containerName); - assertNotEquals(countBefore, countAfter, "No blob was created"); - assertTrue(countAfter - countBefore > 1, "A multipart blob wasn't actually created - " - + "there was only 1 extra blob but there should be one manifest blob and multiple chunk blobs"); + assertThat(countAfter).isEqualTo(countBefore + 1); } finally { returnContainer(containerName); }
