Skip to content

Incorrect exit code when downloading a Static Large Object with a missing segment #48

@ostackbrian

Description

@ostackbrian

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions