25d5e686a1
Users can now include an optional 'range' field in segment descriptions to specify which bytes from the underlying object should be used for the segment data. Only one range may be specified per segment. Note that the 'etag' and 'size_bytes' fields still describe the backing object as a whole. So, if a user uploads a manifest like: [{"path": "/con/obj_seg_1", "etag": null, "size_bytes": 1048576, "range": "0-1023"}, {"path": "/con/obj_seg_2", "etag": null, "size_bytes": 1048576, "range": "512-4095"}, {"path": "/con/obj_seg_1", "etag": null, "size_bytes": 1048576, "range": "-2048"}] then the segment will consist of the first 1024 bytes of /con/obj_seg_1, followed by bytes 513 through 4096 (inclusive) of /con/obj_seg_2, and finally bytes 1046528 through 1048576 (i.e., the last 2048 bytes) of /con/obj_seg_1. ETag generation for SLOs had been updated to prevent collisions when using different ranges for the same set of objects. Additionally, there are two performance enhancements: * On download, multiple sequential requests for segments from the same underlying object will be coalesced into a single ranged request, provided it still does not meet Swift's "egregious range requests" critieria. * On upload, multiple sequential segments referencing the same object will be validated against the response from a single HEAD request. Change-Id: Ia21d51c2cef4e2ee5162161dd2c1d3069009b52c DocImpact |
||
---|---|---|
.. | ||
__init__.py | ||
swift_test_client.py | ||
test_account.py | ||
test_container.py | ||
test_object.py | ||
tests.py |