InternalError on HEAD with a multipart-manifest=get&format=raw query param
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Object Storage (swift) |
In Progress
|
Undecided
|
Unassigned |
Bug Description
vagrant@
HTTP/1.1 500 Internal Error
Content-Type: text/plain
Content-Length: 17
X-Trans-Id: tx42940ff618634
X-Openstack-
Date: Tue, 01 Aug 2023 00:15:13 GMT
Related Swift logs from my dev vsaio environment:
vagrant proxy-server:
Error: An error occurred: #012Traceback (most recent call last):#012 File "/vagrant/
line 75, in handle_request#012 resp = self._app_
line 1116, in _app_call#012 resp = reiterate(resp)#012 File "/vagrant/
line 3589, in reiterate#012 chunk = next(iterator)#012 File "/vagrant/
line 439, in iter_response#012 for chunk in iterator:#012 File "/vagrant/
line 45, in enforce_
BadResponseLeng
description: | updated |
summary: |
- Internal Error 500 on HEAD with a multipart-manifest=get&format=raw - query param + InternalError on HEAD with a multipart-manifest=get&format=raw query + param |
Changed in swift: | |
status: | New → In Progress |
source of bug is here: https:/ /github. com/NVIDIA/ swift/blob/ master/ swift/common/ middleware/ slo.py# L945
original HEAD request for manifest returns no body, parse error makes up data and then tries to return it (which byteenforcer blows up; because HEAD resp shouldn't have body)
N.B. ideally clients might expect HEAD resp to have same headers as GET requests - but that may not be trivial for HEAD w/ ?format=raw unless we refetch