Bug 998383
| Summary: | [REST]: An Incomplete PUT request results in a dangling hidden file on the gluster volume | |||
|---|---|---|---|---|
| Product: | [Red Hat Storage] Red Hat Gluster Storage | Reporter: | pushpesh sharma <psharma> | |
| Component: | gluster-swift | Assignee: | Luis Pabón <lpabon> | |
| Status: | CLOSED CANTFIX | QA Contact: | amainkar | |
| Severity: | high | Docs Contact: | ||
| Priority: | unspecified | |||
| Version: | 2.1 | CC: | david.macdonald, lpabon, madam, ppai, pportant, rhs-bugs, vagarwal | |
| Target Milestone: | --- | Keywords: | ZStream | |
| Target Release: | --- | |||
| Hardware: | aarch64 | |||
| OS: | Linux | |||
| Whiteboard: | ||||
| Fixed In Version: | Doc Type: | Bug Fix | ||
| Doc Text: | Story Points: | --- | ||
| Clone Of: | ||||
| : | 1024608 (view as bug list) | Environment: | ||
| Last Closed: | 2015-02-20 06:30:48 UTC | Type: | Bug | |
| Regression: | --- | Mount Type: | --- | |
| Documentation: | --- | CRM: | ||
| Verified Versions: | Category: | --- | ||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
| Cloudforms Team: | --- | Target Upstream Version: | ||
| Embargoed: | ||||
| Bug Depends On: | ||||
| Bug Blocks: | 1024608 | |||
|
Description
pushpesh sharma
2013-08-19 08:10:31 UTC
Please fix in release-1.8.0 branch first, then after it is merged, we will move it to master branch. openstack-swift behavior : On doing a Ctrl+C during upload, the temp file generated is not automatically deleted. It is cleared when "swift-init main restart" is executed. gluster-swift behavior: gluster-swift follows swift behavior ONLY when "catch_errors" filter is removed from pipeline in /etc/swift/proxy-server.conf Removing "catch_errors" was a false positive. The bug still persists regardless of catch_errors is present in pipeline or not. I was able to spend some time investigating this issue and it looks like we may need some changes in the proxy object controller in the OpenStack Swift code for gluster-swift code to work correctly. One of the issues is that in the PUT code, if the function detects that the client connection has timed out, then it just returns. It returns without notifying the object server and closing the Proxy<-->Object server connection. More information to come. This fix requires fixes in OpenStack Swift Icehouse. The main issue is in swift/proxy/controllers/obj.py:PUT. It first creates connections 'conns' to the object servers. Once the connections are in process of transferring data, it may get a timeout in ChunkReadTimeout(..) which makes it fall to a 'break'. Once it hits the break, then it falls to the code:
if req.content_length and bytes_transferred < req.content_length:
req.client_disconnect = True
self.app.logger.warn(
_('Client disconnected without sending enough data'))
self.app.logger.increment('client_disconnects')
return HTTPClientDisconnect(request=req)
Returns to the caller without notifying the object server that the channel has been terminated. Actually if you notice, this happens with quite a few lines of code just above the code state previously. Returning to the caller without notifying the underlying servers can cause major issues.
This has to be fixed in Swift, there's nothing that can be done in gluster-swift. |