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