[
https://issues.apache.org/jira/browse/JCLOUDS-1483?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Biswa Ranjan Ray updated JCLOUDS-1483:
--------------------------------------
Comment: was deleted
(was: I investigated and figured out the build issue I was facing in Trial 1.
Its utf8 character encoding issue. In the
StaticLargeObjectApiMockTest.testReplaceManifestUnicodeUTF8 method, the
expected and actual json doesn't match because the expected json expects a
string i.e *unic₪de* which doesn't match with the actual i.e *unic₪de*.
My OS is windows 10. Although its a trivial issue I'm trying to fix it setting
maven to UTF8.
But the actual issue w.r.t delete() method in StaticLargeObjectApi is still a
concern.)
> 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,
> StaticLargeObjectApiMockTest.html, 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)