Comment 17 for bug 1174660

Revision history for this message
Samuel Merritt (torgomatic) wrote :

Well, there's a couple bad things that can happen here, and Swift needs to avoid all of them.

Bad Thing 1: when a client disconnects, the proxy can leak memory. THIS DOES NOT HAPPEN RIGHT NOW. The reason for all this connection-draining code is that there are a number of buffers between the object server and the Python code. In particular, there are buffers in C-land that, if not drained, would simply hang around forever. Obviously that *shouldn't* happen, but it did.

Bad Thing 2: when a client disconnects, the proxy reads the rest of the object for no good reason. THIS IS HAPPENING NOW. It should be fixed, and people (myself included) are looking into it.

The reason the previous patch was rejected is that, while it fixed Bad Thing 2, it removed all the workarounds for Bad Thing 1. Any patch for this issue will have to be tested very well to ensure it doesn't cause regressions. This almost certainly means automated test scripts and patches to make it easy for reviewers to both exhibit the original Bad Things *and* for reviewers to verify that the proposed patch squashes both.