Great! I look forward to working with you on this. On Wed, Jul 17, 2013 at 11:40:07AM +0200, Nikola Knezevic wrote: > Hi Andrew, > > Thanks for the explanation. > > I created a JIRA issue and joined the channel. Will try to create a > patch for it, and notify you about it. However, it will probably take > me some 2-3w, as I need to get the clearance first... > > Best, > Nikola > > On Tue, Jul 16, 2013 at 6:14 PM, Andrew Gaul <g...@apache.org> wrote: > > I verified this behavior against S3. jclouds-karaf has logic in > > BlobStoreCommandBase.getBlobInputStream which handles null results from > > getBlob. When null it calls containerExists, and if containerExists > > returns true it throws ContainerNotFoundException otherwise it throws > > KeyNotFoundException. > > > > I find this behavior confusing and suspect that we could push this logic > > into getBlob itself. We could introspect on the provider-specific error > > type to avoid the extra containerExists call, e.g., > > ParseAWSErrorFromXmlContent.refineException. > > > > Nikola, would you like to open a JIRA issue and submit a patch to > > GitHub? Please join us in #jclouds on irc.freenode.net and I can help > > you get started! > > > > On Fri, Jul 12, 2013 at 02:34:02PM +0200, Nikola Knezevic wrote: > >> Hi, > >> > >> can someone help me, I don't know what I'm doing wrong... I'm making some > >> tests, and there I also check if getBlob throws me the right exception when > >> the container (not blob, but container) does not exist. However, my tests > >> are failing, because I keep getting null. > >> > >> The code in question is here: > >> https://gist.github.com/anonymous/5984101 > >> > >> Some (IMHO) relevant output is here: > >> [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 > >> > >> > >> Thanks, > >> Nikola > > > > -- > > Andrew Gaul > > http://gaul.org/
-- Andrew Gaul http://gaul.org/