)]}'
{"swift/obj/server.py":[{"author":{"_account_id":995,"name":"David Goetz","email":"david.goetz@rackspace.com","username":"david-goetz"},"change_message_id":"52abfe27b98891aee4e42924aa01bd959b15b691","unresolved":false,"context_lines":[{"line_number":457,"context_line":"        :param container: container name for the object"},{"line_number":458,"context_line":"        :param obj: object name"},{"line_number":459,"context_line":"        :param headers_in: dictionary of headers from the original request"},{"line_number":460,"context_line":"        :param headers_out: dictionary of headers to send in the container"},{"line_number":461,"context_line":"                            request"},{"line_number":462,"context_line":"        :param objdevice: device name that the object is in"},{"line_number":463,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F8Ug%3D","line":460,"updated":"2011-10-18 16:28:42.000000000","message":"no headers_out param","commit_id":"66b718a5a2afcf82879e03e279edc3aba2ca7c72"},{"author":{"_account_id":995,"name":"David Goetz","email":"david.goetz@rackspace.com","username":"david-goetz"},"change_message_id":"52abfe27b98891aee4e42924aa01bd959b15b691","unresolved":false,"context_lines":[{"line_number":471,"context_line":"            headers_out[\u0027x-size\u0027] \u003d \u00270\u0027"},{"line_number":472,"context_line":"            headers_out[\u0027x-content-type\u0027] \u003d \u0027text/plain\u0027"},{"line_number":473,"context_line":"            headers_out[\u0027x-etag\u0027] \u003d \u0027d41d8cd98f00b204e9800998ecf8427e\u0027"},{"line_number":474,"context_line":"        return self.async_update(op, self.expiring_objects_account,"},{"line_number":475,"context_line":"            str(delete_at / self.expiring_objects_container_divisor *"},{"line_number":476,"context_line":"                self.expiring_objects_container_divisor),"},{"line_number":477,"context_line":"            \u0027%s-%s/%s/%s\u0027 % (delete_at, account, container, obj),"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F8UQ%3D","line":474,"updated":"2011-10-18 16:28:42.000000000","message":"why return async_update, its always None (its in a few places)","commit_id":"66b718a5a2afcf82879e03e279edc3aba2ca7c72"},{"author":{"_account_id":995,"name":"David Goetz","email":"david.goetz@rackspace.com","username":"david-goetz"},"change_message_id":"52abfe27b98891aee4e42924aa01bd959b15b691","unresolved":false,"context_lines":[{"line_number":477,"context_line":"            \u0027%s-%s/%s/%s\u0027 % (delete_at, account, container, obj),"},{"line_number":478,"context_line":"            host, partition, contdevice, headers_out, objdevice)"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"    def POST(self, request):"},{"line_number":481,"context_line":"        \"\"\"Handle HTTP POST requests for the Swift Object Server.\"\"\""},{"line_number":482,"context_line":"        try:"},{"line_number":483,"context_line":"            device, partition, account, container, obj \u003d \\"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F8Js%3D","line":480,"updated":"2011-10-18 16:28:42.000000000","message":"accepts posts on expired objects (oh snap)\n\nonly matters on non-post-as-copy but still","commit_id":"66b718a5a2afcf82879e03e279edc3aba2ca7c72"},{"author":{"_account_id":995,"name":"David Goetz","email":"david.goetz@rackspace.com","username":"david-goetz"},"change_message_id":"52abfe27b98891aee4e42924aa01bd959b15b691","unresolved":false,"context_lines":[{"line_number":510,"context_line":"            if header_key in request.headers:"},{"line_number":511,"context_line":"                header_caps \u003d header_key.title()"},{"line_number":512,"context_line":"                metadata[header_caps] \u003d request.headers[header_key]"},{"line_number":513,"context_line":"        old_delete_at \u003d int(file.metadata.get(\u0027X-Delete-At\u0027) or 0)"},{"line_number":514,"context_line":"        new_delete_at \u003d int(metadata.get(\u0027X-Delete-At\u0027) or 0)"},{"line_number":515,"context_line":"        if old_delete_at !\u003d new_delete_at:"},{"line_number":516,"context_line":"            if new_delete_at:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F8Tw%3D","line":513,"updated":"2011-10-18 16:28:42.000000000","message":"Should do a check that this is in future. but i guess earlier in function before you edit other data.\n\nalso maybe make this a separate func cause its in a couple places?","commit_id":"66b718a5a2afcf82879e03e279edc3aba2ca7c72"}],"swift/proxy/server.py":[{"author":{"_account_id":995,"name":"David Goetz","email":"david.goetz@rackspace.com","username":"david-goetz"},"change_message_id":"52abfe27b98891aee4e42924aa01bd959b15b691","unresolved":false,"context_lines":[{"line_number":914,"context_line":"            if not containers:"},{"line_number":915,"context_line":"                return HTTPNotFound(request\u003dreq)"},{"line_number":916,"context_line":"            if \u0027x-delete-at\u0027 in req.headers:"},{"line_number":917,"context_line":"                delete_at_container \u003d str(int(req.headers[\u0027x-delete-at\u0027]) /"},{"line_number":918,"context_line":"                    self.app.expiring_objects_container_divisor *"},{"line_number":919,"context_line":"                    self.app.expiring_objects_container_divisor)"},{"line_number":920,"context_line":"                delete_at_part, delete_at_nodes \u003d \\"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F8J8%3D","line":917,"updated":"2011-10-18 16:28:42.000000000","message":"non int x-delete-at causes 500","commit_id":"66b718a5a2afcf82879e03e279edc3aba2ca7c72"}],"test/unit/obj/test_expirer.py":[{"author":{"_account_id":995,"name":"David Goetz","email":"david.goetz@rackspace.com","username":"david-goetz"},"change_message_id":"52abfe27b98891aee4e42924aa01bd959b15b691","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# implied."},{"line_number":13,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import json"},{"line_number":17,"context_line":"from sys import exc_info"},{"line_number":18,"context_line":"from time import time"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F8OE%3D","line":15,"updated":"2011-10-18 16:28:42.000000000","message":"You can\u0027t run unit tests anymore unless you have /etc/swift/object-expirer.conf","commit_id":"66b718a5a2afcf82879e03e279edc3aba2ca7c72"}]}
