swiftly
swiftly copied to clipboard
Incorrect exit code when downloading a Static Large Object with a missing segment
To reproduce: create a static large object then delete a segment (not the first, though, there's a bug in swift where that will result in a 500 on the swift side).
download output: VERBOSE 0.00 1 Attempting auth v2 RAX-KSKEY:apiKeyCredentials with https://identity.api.rackspacecloud.com/v2.0 VERBOSE 0.00 1 Establishing HTTPS connection to identity.api.rackspacecloud.com VERBOSE 0.00 1 > POST /v2.0/tokens VERBOSE 0.00 1 > {"auth": {"RAX-KSKEY:apiKeyCredentials": {"username": "xxxxx", "apiKey": "000000"}}} VERBOSE 0.46 1 < 200 OK VERBOSE 0.46 1 Establishing HTTPS connection to snet-storage101.iad3.clouddrive.com VERBOSE 0.48 1 > GET /v1/MossoCloudFS_xxxxx/largeobjtest/BioCoder_Winter2014.epub User-Agent: Swiftly v2.02 X-Auth-Token: 00000 VERBOSE 0.70 1 < 200 OK
note that the error code returned is 0
$ echo $? 0 $ ls -l test.download.epub -rw-rw-r-- 1 brianr brianr 2097152 Apr 18 16:14 test.download.epub
When you do a swiftly head, you can see what the content length should be: Content-Length: 3554828 Content-Type: application/octet-stream Etag: "ea2ab35ca8df0b430602ff758136a8b5" Last-Modified: Sun, 02 Mar 2014 05:02:59 GMT X-Static-Large-Object: True X-Timestamp: 1393736578.95527 X-Trans-Id: txd1a21961c062419dbd386-005351532eiad3
Here's how the python-swiftclient handles this:
swift --os-auth-token $API_AUTH_TOKEN
--os-storage-url $SWIFT_ENDPOINT
download
-o /dev/null
${CONTAINER} ${OBJECT}
output:
BioCoder_Winter2014.epub [headers 0.737s, total 7.889s, 0.266s MB/s] BioCoder_Winter2014.epub: md5sum != etag, 6e48448aa823613256386664e115d457 != "ea2ab35ca8df0b430602ff758136a8b5" BioCoder_Winter2014.epub: read_length != content_length, 2097152 != 3554828 $ echo $? 1