Support restart of partial download
Downloads of very large images may be interrupted prior to completion, due to dropped connections and such.
Rather than discard the partial image and start again from the zero offset, it could be preferable to restart from the current offset where the storage backage support range-based GETs and then knit the remainder of the image content into the partial result of the first GET.
In order to avoid polluting the API, this logic should be limited to the service->backend leg (as opposed to end-to-end interaction from the client side).
The change should be restricted to the glance backend store gluecode for those
stores that support Ranges (S3, Swift, HTTP).
In the S3 case, the boto.s3.
UPDATE:
At the J summit, we discussed adding this to both, the http and the store, APIs.
Blueprint information
- Status:
- Complete
- Approver:
- None
- Priority:
- Medium
- Drafter:
- Eoghan Glynn
- Direction:
- Approved
- Assignee:
- Flavio Percoco
- Definition:
- Discussion
- Series goal:
- Accepted for juno
- Implementation:
- Implemented
- Milestone target:
- 2014.2
- Started by
- Mark Washenberger
- Completed by
- Mark Washenberger
Related branches
Related bugs
Sprints
Whiteboard
I am interested in this work. I would like it to include uploads as well.
----
I think we should move this blueprint forward.
-- flaper87
Looks like we have some support for this in swift since ae568d7858edeee
But it would be nice to support more stores as well. Perhaps the ranged read functionality could be part of the store interface and the retry logic could move up?
markwash wishlist 2014-02-14
Agreed, I think this is very useful but it has to wait 'til we complete the glance.store library. We can support this for some stores already: FS, swift, rdb, (gridFS I think).
-- flaper87 2014-04-10
rosmaita wishlist 2014-04-25
Gerrit topic: https:/
Addressed by: https:/
API support for random access to images
Gerrit topic: https:/
Addressed by: https:/
Complete random_access for the filesystem store
Addressed by: https:/
Adopt glance.store library in Glance