[
https://issues.apache.org/jira/browse/JCLOUDS-193?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Rishabh Makhija updated JCLOUDS-193:
------------------------------------
Comment: was deleted
(was: Hi [~gaul], is this bug still present? I checked with S3 and getBlob()
throws ContainerNotFoundException.)
> getBlob and putBlob do not throw ContainerNotFoundException on non-existent
> bucket
> ----------------------------------------------------------------------------------
>
> Key: JCLOUDS-193
> URL: https://issues.apache.org/jira/browse/JCLOUDS-193
> Project: jclouds
> Issue Type: Bug
> Components: jclouds-blobstore
> Affects Versions: 1.6.0, 1.6.1
> Reporter: Nikola Knezevic
> Priority: Critical
>
> getBlob method of BlobStore is assumed to throw ContainerNotFoundException
> exception if the underlying container does not exist. However, for S3 and
> Rackspace providers (only these two were tested) it does not - it simply
> returns null. This severely breaks the API, as it differs from the
> documentation. Moreover, FileSystem provider correctly throws the exception.
> Test code that shows the incorrect behaviour is here:
> https://gist.github.com/anonymous/5984101
> Some (IMHO) relevant output is here:
> {noformat}
> [main][] ContainerExistTest:getBlob - Getting blob 'uploadedImage' from
> 'wrongtest-container-1'
> [main][] keSyncToAsyncHttpMethod:logTrace - >> converting GetObject
> [main][] RestAnnotationProcessor:logTrace - using endpoint
> Optional.of(https://s3.amazonaws.com) for public abstract
> com.google.common.util.concurrent.ListenableFuture
> org.jclouds.s3.S3AsyncClient.getObject(java.lang.String,java.lang.String,org.jclouds.http.options.GetOptions[])[wrongtest-container-1,
> uploadedImage, [Lorg.jclouds.http.options.GetOptions;@707b11cf]
> [main][] RestAnnotationProcessor:logTrace - adding filter
> org.jclouds.s3.filters.RequestAuthorizeSignature@46f50ae2 from annotation on
> org.jclouds.s3.S3AsyncClient
> [main][] keSyncToAsyncHttpMethod:logTrace - << converted GetObject to GET
> https://wrongtest-container-1.s3.amazonaws.com/uploadedImage HTTP/1.1
> [main][] keSyncToAsyncHttpMethod:logTrace - << response from GetObject is
> parsed by ParseObjectFromHeadersAndHttpContent
> [main][] keSyncToAsyncHttpMethod:logTrace - << exceptions from GetObject are
> parsed by NullOnKeyNotFound
> [main][] keSyncToAsyncHttpMethod:logDebug - >> invoking GetObject
> [main][] signature:logDebug - >> GET
> https://wrongtest-container-1.s3.amazonaws.com/uploadedImage HTTP/1.1
> [main][] signature:logDebug - >> Host:
> wrongtest-container-1.s3.amazonaws.com
> [main][] signature:logDebug - >> Date: Fri, 12 Jul 2013
> 12:25:11 GMT
> [main][] signature:logDebug - >> "GET[\n]"
> [main][] signature:logDebug - >> "[\n]"
> [main][] signature:logDebug - >> "[\n]"
> [main][] signature:logDebug - >> "Fri, 12 Jul 2013 12:25:11
> GMT[\n]"
> [main][] signature:logDebug - >>
> "/wrongtest-container-1/uploadedImage"
> [main][] signature:logDebug - << GET
> https://wrongtest-container-1.s3.amazonaws.com/uploadedImage HTTP/1.1
> [main][] signature:logDebug - << Host:
> wrongtest-container-1.s3.amazonaws.com
> [main][] signature:logDebug - << Date: Fri, 12 Jul 2013
> 12:25:11 GMT
> [main][] pCommandExecutorService:logDebug - Sending request 2132681414: GET
> https://wrongtest-container-1.s3.amazonaws.com/uploadedImage HTTP/1.1
> [main][] headers:logDebug - >> GET
> https://wrongtest-container-1.s3.amazonaws.com/uploadedImage HTTP/1.1
> [main][] headers:logDebug - >> Host:
> wrongtest-container-1.s3.amazonaws.com
> [main][] headers:logDebug - >> Date: Fri, 12 Jul 2013
> 12:25:11 GMT
> [main][] pCommandExecutorService:logDebug - Receiving response 2132681414:
> HTTP/1.1 404 Not Found
> [main][] headers:logDebug - << HTTP/1.1 404 Not Found
> [main][] headers:logDebug - << x-amz-request-id:
> 3EE5AFE13C3ACE57
> [main][] headers:logDebug - << Date: Fri, 12 Jul 2013
> 12:25:14 GMT
> [main][] headers:logDebug - << Transfer-Encoding: chunked
> [main][] headers:logDebug - << x-amz-id-2: <snip>
> [main][] headers:logDebug - << Server: AmazonS3
> [main][] headers:logDebug - << Content-Type: application/xml
> [main][] wire:logDebug - << "<?xml version="1.0"
> encoding="UTF-8"?>[\n]"
> [main][] wire:logDebug - <<
> "<Error><Code>NoSuchBucket</Code><Message>The specified bucket does not
> exist</Message><BucketName>wrongtest-container-1</BucketName><RequestId>3EE5AFE13C3ACE57</RequestId><HostId>snip</HostId></Error>"
> [main][] ContainerExistTest:getBlob - Got blob 'null'
> [main][] tainerExistTest:verifyOperations - Got this blob!? null
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)