)]}'
{"swift/container/backend.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"db05015e52b815fd88bcd16b37168ba67979058c","unresolved":false,"context_lines":[{"line_number":348,"context_line":"                UPDATE container_stat"},{"line_number":349,"context_line":"                SET storage_policy_index \u003d ?"},{"line_number":350,"context_line":"            \"\"\", (policy_index,))"},{"line_number":351,"context_line":"            conn.commit()"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"        with self.get() as conn:"},{"line_number":354,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2FndY%3D","line":351,"updated":"2014-03-15 01:14:03.000000000","message":"shouldn\u0027t this guard with a where clause to ensure put_timestamp \u003e delete_timestamp, or obj_count \u003d 0 (so you don\u0027t accidentally change the storage policy of an existing container during a race).","commit_id":"8a1a86a3c600b1dbacadb3c965e353dec33703e4"}],"swift/container/server.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"db05015e52b815fd88bcd16b37168ba67979058c","unresolved":false,"context_lines":[{"line_number":302,"context_line":"                    created \u003d False"},{"line_number":303,"context_line":"            else:"},{"line_number":304,"context_line":"                created \u003d broker.is_deleted()"},{"line_number":305,"context_line":"                broker.update_put_timestamp(timestamp)"},{"line_number":306,"context_line":"                if broker.is_deleted():"},{"line_number":307,"context_line":"                    return HTTPConflict(request\u003dreq)"},{"line_number":308,"context_line":"            metadata \u003d {}"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2Fnak%3D","side":"PARENT","line":305,"updated":"2014-03-15 01:14:03.000000000","message":"So this is a bug then huh - we need to call update_put_timestamp down there by set_storage_policy?\n\ne.g.\n\nYou LBYL for db exists - but when you init you hit DatabaseAlreadyExists on a *deleted* database (replication is pushing out those tombstone\u0027d databases!).\n\nIn that case update_put_timestamp never get\u0027s called and this databases is_deleted will return True (forever?)\n\nI\u0027ll try to write a test...","commit_id":"3a0c19b311481c4e7534e5a1c02dba595b919b2c"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5adfc12ba30dbadfaf8a69ff0c8fc6e61012a3f3","unresolved":false,"context_lines":[{"line_number":326,"context_line":"                # We\u0027ve just revived a deleted container: the database is"},{"line_number":327,"context_line":"                # there, but it was marked deleted. We need to update its"},{"line_number":328,"context_line":"                # storage policy index."},{"line_number":329,"context_line":"                broker.set_storage_policy_index(requested_policy_index)"},{"line_number":330,"context_line":"            metadata \u003d {}"},{"line_number":331,"context_line":"            metadata.update("},{"line_number":332,"context_line":"                (key, (value, timestamp))"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2FImo%3D","line":329,"updated":"2014-03-20 01:28:05.000000000","message":"I think there is fundamentally a race doing this here, and I\u0027m very skeptical of the necessity to allow this on containers who\u0027s put_timestamp \u003e delete_timestamp.","commit_id":"ce8b63d92a89aaf754787f898839fc0fab3f9762"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"1f33f1210070899633f6b66ac4bfec8fafbfdbad","unresolved":false,"context_lines":[{"line_number":326,"context_line":"                # We\u0027ve just revived a deleted container: the database is"},{"line_number":327,"context_line":"                # there, but it was marked deleted. We need to update its"},{"line_number":328,"context_line":"                # storage policy index."},{"line_number":329,"context_line":"                broker.set_storage_policy_index(requested_policy_index)"},{"line_number":330,"context_line":"            metadata \u003d {}"},{"line_number":331,"context_line":"            metadata.update("},{"line_number":332,"context_line":"                (key, (value, timestamp))"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2FAks%3D","line":329,"in_reply_to":"AAAAWH%2F%2FImo%3D","updated":"2014-03-20 23:41:23.000000000","message":"Maybe let\u0027s add a check that object_count \u003d\u003d 0?","commit_id":"ce8b63d92a89aaf754787f898839fc0fab3f9762"}],"test/unit/container/test_backend.py":[{"author":{"_account_id":5189,"name":"Yuan Zhou","email":"dunk007@gmail.com","username":"yuan-zhou"},"change_message_id":"cd681cdd00ddd7ed893cec137cafda0c42a1bd2a","unresolved":false,"context_lines":[{"line_number":1139,"context_line":""},{"line_number":1140,"context_line":"        broker.set_storage_policy_index(111)"},{"line_number":1141,"context_line":"        info \u003d broker.get_info()"},{"line_number":1142,"context_line":"        print repr(info)"},{"line_number":1143,"context_line":"        self.assertEqual(111, info[\u0027storage_policy_index\u0027])"},{"line_number":1144,"context_line":"        self.assertEqual(3, info[\u0027misplaced_object_count\u0027])"},{"line_number":1145,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2Fb8c%3D","line":1142,"updated":"2014-02-13 08:16:55.000000000","message":"is is for debug?","commit_id":"40f6e782733cee406ea6a79d7bd75ee31a5d8f76"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"07ebcda7892d32d1ce09117f62520c4c24e55070","unresolved":false,"context_lines":[{"line_number":1139,"context_line":""},{"line_number":1140,"context_line":"        broker.set_storage_policy_index(111)"},{"line_number":1141,"context_line":"        info \u003d broker.get_info()"},{"line_number":1142,"context_line":"        print repr(info)"},{"line_number":1143,"context_line":"        self.assertEqual(111, info[\u0027storage_policy_index\u0027])"},{"line_number":1144,"context_line":"        self.assertEqual(3, info[\u0027misplaced_object_count\u0027])"},{"line_number":1145,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FW48%3D","line":1142,"in_reply_to":"AAAAUX%2F%2Fb8c%3D","updated":"2014-02-13 18:45:03.000000000","message":"Yup, you caught me. :)\n\nWill fix.","commit_id":"40f6e782733cee406ea6a79d7bd75ee31a5d8f76"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"db05015e52b815fd88bcd16b37168ba67979058c","unresolved":false,"context_lines":[{"line_number":1082,"context_line":"        broker \u003d ContainerBroker(\u0027:memory:\u0027, account\u003d\u0027test_account\u0027,"},{"line_number":1083,"context_line":"                                 container\u003d\u0027test_container\u0027)"},{"line_number":1084,"context_line":"        broker.initialize(normalize_timestamp(\u00271\u0027), 0)"},{"line_number":1085,"context_line":"        broker.set_storage_policy_index(2)"},{"line_number":1086,"context_line":""},{"line_number":1087,"context_line":""},{"line_number":1088,"context_line":"def premetadata_create_container_stat_table(self, conn, put_timestamp\u003dNone,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2Fnb0%3D","line":1085,"updated":"2014-03-15 01:14:03.000000000","message":"there\u0027s got to be a missing assert in here - but I\u0027m not even sure we want this test to pass - not like this anyway.\n\nObviously we need to do something for *deleted* containers - but do we want this interface available on all containers!?  Seems scary...","commit_id":"8a1a86a3c600b1dbacadb3c965e353dec33703e4"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5adfc12ba30dbadfaf8a69ff0c8fc6e61012a3f3","unresolved":false,"context_lines":[{"line_number":1083,"context_line":"                                 container\u003d\u0027test_container\u0027)"},{"line_number":1084,"context_line":"        broker.initialize(normalize_timestamp(\u00271\u0027), 0)"},{"line_number":1085,"context_line":"        broker.set_storage_policy_index(2)"},{"line_number":1086,"context_line":""},{"line_number":1087,"context_line":""},{"line_number":1088,"context_line":"def premetadata_create_container_stat_table(self, conn, put_timestamp,"},{"line_number":1089,"context_line":"                                            _spi\u003dNone):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2FItA%3D","line":1086,"updated":"2014-03-20 01:28:05.000000000","message":"missing asserts:\n\nhttps://gist.github.com/clayg/9655112","commit_id":"ce8b63d92a89aaf754787f898839fc0fab3f9762"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"1f33f1210070899633f6b66ac4bfec8fafbfdbad","unresolved":false,"context_lines":[{"line_number":1083,"context_line":"                                 container\u003d\u0027test_container\u0027)"},{"line_number":1084,"context_line":"        broker.initialize(normalize_timestamp(\u00271\u0027), 0)"},{"line_number":1085,"context_line":"        broker.set_storage_policy_index(2)"},{"line_number":1086,"context_line":""},{"line_number":1087,"context_line":""},{"line_number":1088,"context_line":"def premetadata_create_container_stat_table(self, conn, put_timestamp,"},{"line_number":1089,"context_line":"                                            _spi\u003dNone):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2FAkw%3D","line":1086,"in_reply_to":"AAAAWH%2F%2FItA%3D","updated":"2014-03-20 23:41:23.000000000","message":"I do sort of wonder where the heck those went... I could have sworn I wrote some.","commit_id":"ce8b63d92a89aaf754787f898839fc0fab3f9762"}],"test/unit/container/test_server.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"db05015e52b815fd88bcd16b37168ba67979058c","unresolved":false,"context_lines":[{"line_number":1043,"context_line":"            headers\u003d{\u0027X-Timestamp\u0027: \u0027400\u0027})"},{"line_number":1044,"context_line":"        resp \u003d req.get_response(self.controller)"},{"line_number":1045,"context_line":"        self.assertEqual(resp.headers[\u0027X-Storage-Policy-Index\u0027], \u00272\u0027)"},{"line_number":1046,"context_line":""},{"line_number":1047,"context_line":"    def test_DELETE_object(self):"},{"line_number":1048,"context_line":"        req \u003d Request.blank("},{"line_number":1049,"context_line":"            \u0027/sda1/p/a/c\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2FnaY%3D","line":1046,"updated":"2014-03-15 01:14:03.000000000","message":"I found the negative version of this test (test_PUT_no_policy_change) but not the inverse (test_no_storage_policy_via_PUT_after_DELETE)","commit_id":"8a1a86a3c600b1dbacadb3c965e353dec33703e4"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5adfc12ba30dbadfaf8a69ff0c8fc6e61012a3f3","unresolved":false,"context_lines":[{"line_number":933,"context_line":"            headers\u003d{\u0027X-Timestamp\u0027: \u0027400\u0027})"},{"line_number":934,"context_line":"        resp \u003d req.get_response(self.controller)"},{"line_number":935,"context_line":"        self.assertEqual(resp.headers[\u0027X-Storage-Policy-Index\u0027], \u00272\u0027)"},{"line_number":936,"context_line":""},{"line_number":937,"context_line":"    def test_DELETE_object(self):"},{"line_number":938,"context_line":"        req \u003d Request.blank("},{"line_number":939,"context_line":"            \u0027/sda1/p/a/c\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2FIuo%3D","line":936,"updated":"2014-03-20 01:28:05.000000000","message":"so I said previously I thought the inverse of this test was missing, so I wrote it, and sure-enough...\n\nhttps://gist.github.com/clayg/9655076","commit_id":"ce8b63d92a89aaf754787f898839fc0fab3f9762"}]}
