[ 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(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. > 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)