[ 
https://issues.apache.org/jira/browse/JCLOUDS-1483?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Biswa Ranjan Ray updated JCLOUDS-1483:
--------------------------------------
    Description: 
Hi Team,

I set the issue type to Improvement as I'm not sure if its a bug in jclouds 
library. :)

*Usecase*: Try to delete a blob (size ~ 107kb) from a swift container using 
BlobStore.removBlob() api of jclouds.

*Issue*: Following exception is  obtained: com.google.gson.JsonSyntaxException: 
java.lang.IllegalStateException: *Expected BEGIN_OBJECT but was STRING at line 
1 column 1 path $*.

*Code*: The below code snippet shows how a blob is deleted from a swift 
container.

BlobStore blobStore = getBlobStoreContext();              
blobStore.removeBlob(containerName, fileName);

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(CloudProviders.PROVIDER_SWIFT.toString())
                                .endpoint(authUrl+"/v3")
                                .credentials(identity,credential)
                                .overrides(override)
                                .buildApi(BlobStoreContext.class);
        }

 *Debug:* Following are my observations after debugging the code.
 # got the BlobStore. The blobstore type is found to be 
RegionScopedSwiftBlobStore.
 # stepinto blobStore.removeBlob(containerName, fileName);                      
                    at line 396 in *RegionScopedSwiftBlobStore* class, it 
expects a response from *StaticLargeObjectApi* and this is where it throws the 
exception. DeleteStaticLargeObjectResponse response = 
api.getStaticLargeObjectApi(regionId, container).delete(name);

*Analysis*: While the api BlobStore.removeBlob fails 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. I believe its the StaticLargeObjectApi 
that's causing issue. As per the java doc of StaticLargeObjectApi, it is in 
beta and still under evaluation. 

Any help is highly appreciated.

Thank you.

 

 

  was:
Hi Team,

I set the issue type to Improvement as I'm not sure if its a bug in jclouds 
library. :)

*Usecase*: Try to delete a blob (size ~ 107kb) from a swift container using 
BlobStore.removBlob() api of jclouds.

*Issue*: Following exception is  obtained: com.google.gson.JsonSyntaxException: 
java.lang.IllegalStateException: *Expected BEGIN_OBJECT but was STRING at line 
1 column 1 path $*.

*Code*: The below code snippet shows how a blob is deleted from a swift 
container.

BlobStore blobStore = getBlobStoreContext();              
blobStore.removeBlob(containerName, fileName);

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);
 }

 

*Debug:* Following are my observations after debugging the code.
 # got the BlobStore. The blobstore type is found to be 
RegionScopedSwiftBlobStore.
 # stepinto blobStore.removeBlob(containerName, fileName);                      
                    at line 396 in *RegionScopedSwiftBlobStore* class, it 
expects a response from *StaticLargeObjectApi* and this is where it throws the 
exception. DeleteStaticLargeObjectResponse response = 
api.getStaticLargeObjectApi(regionId, container).delete(name);

*Analysis*: While the api BlobStore.removeBlob fails 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. I believe its the StaticLargeObjectApi 
that's causing issue. As per the java doc of StaticLargeObjectApi, it is in 
beta and still under evaluation. 

Any help is highly appreciated.

Thank you.

 

 


> 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: Improvement
>          Components: jclouds-blobstore
>    Affects Versions: 2.1.1
>            Reporter: Biswa Ranjan Ray
>            Priority: Major
>              Labels: openstack-swift
>         Attachments: stacktrace.txt
>
>
> Hi Team,
> I set the issue type to Improvement as I'm not sure if its a bug in jclouds 
> library. :)
> *Usecase*: Try to delete a blob (size ~ 107kb) from a swift container using 
> BlobStore.removBlob() api of jclouds.
> *Issue*: Following exception is  obtained: 
> com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: 
> *Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $*.
> *Code*: The below code snippet shows how a blob is deleted from a swift 
> container.
> BlobStore blobStore = getBlobStoreContext();              
> blobStore.removeBlob(containerName, fileName);
> 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(CloudProviders.PROVIDER_SWIFT.toString())
>                               .endpoint(authUrl+"/v3")
>                               .credentials(identity,credential)
>                               .overrides(override)
>                               .buildApi(BlobStoreContext.class);
>       }
>  *Debug:* Following are my observations after debugging the code.
>  # got the BlobStore. The blobstore type is found to be 
> RegionScopedSwiftBlobStore.
>  # stepinto blobStore.removeBlob(containerName, fileName);                    
>                       at line 396 in *RegionScopedSwiftBlobStore* class, it 
> expects a response from *StaticLargeObjectApi* and this is where it throws 
> the exception. DeleteStaticLargeObjectResponse response = 
> api.getStaticLargeObjectApi(regionId, container).delete(name);
> *Analysis*: While the api BlobStore.removeBlob fails 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. I believe its the StaticLargeObjectApi 
> that's causing issue. As per the java doc of StaticLargeObjectApi, it is in 
> beta and still under evaluation. 
> Any help is highly appreciated.
> Thank you.
>  
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to