500 error when retrieving DLO manifest with If-Modified-Since
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Object Storage (swift) |
Fix Released
|
Undecided
|
Samuel Merritt |
Bug Description
When retrieving a DLO, the middleware does not filter out If-Modified-Since and If-Unmodified-Since when it is requesting segments, which can cause a segment request to get a 304 Not Modified response. Upon seeing the 304, DLO panics and raises an error.
The fix is to strip out If-Modified-Since and If-Unmodified-Since from segment requests.
It's easiest to see this by performing a HEAD on the manifest, taking the Last-Modified, subtracting one second, and then performing a GET with If-Modified-Since: <new timestamp>. Odds are it took you at least one second to upload all the segments of your DLO, so you are likely to see the crash right away.
Feb 12 07:50:43 saio proxy-server: ERROR: While processing manifest /v1/AUTH_
Traceback (most recent call last):
File "/home/
(self.name, seg_resp.
SegmentError: ERROR: While processing manifest /v1/AUTH_
Feb 12 07:50:43 saio proxy-server: Error: An error occurred:
Traceback (most recent call last):
File "/home/
resp = self._app_call(env)
File "/home/
resp = self.app(env, self._start_
File "/home/
return func(self, Request(env))(env, start_response)
File "/home/
resp = req.get_
File "/home/
status, headers, app_iter = self.call_
File "/home/
app_iter = reiterate(app_iter)
File "/home/
chunk = next(iterator)
File "/home/
chunk = iterator.next()
File "/home/
(self.name, seg_resp.
SegmentError: ERROR: While processing manifest /v1/AUTH_
Changed in swift: | |
assignee: | nobody → Samuel Merritt (torgomatic) |
Changed in swift: | |
milestone: | none → 1.13.0 |
status: | Fix Committed → Fix Released |
Fix proposed to branch: master /review. openstack. org/73448
Review: https:/