[ https://issues.apache.org/jira/browse/JCLOUDS-1483?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Biswa Ranjan Ray updated JCLOUDS-1483: -------------------------------------- Attachment: BuildException.txt > Removing a blob from a Swift container using BlobStore.removeBlob fails. > ------------------------------------------------------------------------ > > Key: JCLOUDS-1483 > URL: https://issues.apache.org/jira/browse/JCLOUDS-1483 > Project: jclouds > Issue Type: Bug > Components: jclouds-blobstore > Affects Versions: 2.1.1 > Reporter: Biswa Ranjan Ray > Priority: Major > Labels: openstack-swift > Attachments: BuildException.txt, NullPointerException.txt, > stacktrace.txt > > > > *Usecase*: Try to delete a blob (size ~ 107kb) from a swift container using > BlobStore.removBlob() api of jclouds. > *Issue*: Following exception is found in console: > com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: > *Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $*. > *Code*: Sharing the code snippet that I've used to delete a blob from a swift > container. > BlobStore blobStore = getBlobStoreContext(); > blobStore.removeBlob(containerName, fileName); > {code:java} > //To get the BlobStoreContext for OpenStack Swift > private BlobStoreContext getBlobStoreContext() { > final Properties override = new Properties(); > override.put(KeystoneProperties.KEYSTONE_VERSION, "3"); > override.put(KeystoneProperties.SCOPE, "project:" + > swiftConfig.getProject()); > > final String credential = swiftConfig.getPassword(); > final String identity = swiftConfig.getUserDomain() + ":" + > swiftConfig.getUsername(); > final String authUrl = swiftConfig.getAuthUrl(); > > return ContextBuilder.newBuilder("openstack-swift") > .endpoint(authUrl+"/v3") > .credentials(identity,credential) > .overrides(override) > .buildApi(BlobStoreContext.class); > } > {code} > *Debug:* Following are my observations after debugging the code. > # The type of the blobstore is found to be RegionScopedSwiftBlobStore. > # stepinto blobStore.*removeBlob*(containerName, fileName); > at line 396 in *RegionScopedSwiftBlobStore* class, I > found it expects a response from *StaticLargeObjectApi* as shown in the below > code and this is where the exception occurs: > ** > DeleteStaticLargeObjectResponse response = > api.getStaticLargeObjectApi(regionId, container).delete(name); > *Analysis*: While the api BlobStore.removeBlob fails to delete a blob in a > Swift container, it works fine in AWS S3 and GCS container. I also observed > that if I use *ObjectApi.delete(objectName)* instead of > *BlobStore.removeBlob* then the blob gets deleted from the swift container > without any issue. As per the java doc of StaticLargeObjectApi, it is in beta > and still under evaluation. Is this api stable? > Any help is highly appreciated. > Thank you. -- This message was sent by Atlassian JIRA (v7.6.3#76005)