)]}'
{"swift/common/db_replicator.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"64cd65c7b8a7c7eee2361faeceade6daa47198b4","unresolved":false,"context_lines":[{"line_number":355,"context_line":"        sync_args_order \u003d (\u0027max_row\u0027, \u0027hash\u0027, \u0027id\u0027, \u0027created_at\u0027,"},{"line_number":356,"context_line":"                           \u0027put_timestamp\u0027, \u0027delete_timestamp\u0027, \u0027metadata\u0027)"},{"line_number":357,"context_line":"        if len(POLICIES) \u003e 1:"},{"line_number":358,"context_line":"            sync_args_order +\u003d (\u0027status_changed_at\u0027,)"},{"line_number":359,"context_line":"        return tuple(info[key] for key in sync_args_order)"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    def _repl_to_node(self, node, broker, partition, info):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F9ZxA%3D","line":358,"updated":"2014-04-04 19:42:44.000000000","message":"I think i might drop this here and send the extra args for container replication.... where we need them.","commit_id":"3c8a50e10484f27e832f465df5904d9c486d9fa3"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"3794eed2e942629bea6f55799c9e1f51244006b6","unresolved":false,"context_lines":[{"line_number":355,"context_line":"        sync_args_order \u003d (\u0027max_row\u0027, \u0027hash\u0027, \u0027id\u0027, \u0027created_at\u0027,"},{"line_number":356,"context_line":"                           \u0027put_timestamp\u0027, \u0027delete_timestamp\u0027, \u0027metadata\u0027)"},{"line_number":357,"context_line":"        if len(POLICIES) \u003e 1:"},{"line_number":358,"context_line":"            sync_args_order +\u003d (\u0027status_changed_at\u0027,)"},{"line_number":359,"context_line":"        return tuple(info[key] for key in sync_args_order)"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    def _repl_to_node(self, node, broker, partition, info):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWn%2F%2F%2FnY%3D","line":358,"in_reply_to":"AAAAWH%2F9ZxA%3D","updated":"2014-04-08 02:34:29.000000000","message":"Done","commit_id":"3c8a50e10484f27e832f465df5904d9c486d9fa3"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"64cd65c7b8a7c7eee2361faeceade6daa47198b4","unresolved":false,"context_lines":[{"line_number":638,"context_line":"            \u0027metadata\u0027: remote_metadata,"},{"line_number":639,"context_line":"        }"},{"line_number":640,"context_line":"        if len(args) \u003e 7:"},{"line_number":641,"context_line":"            remote_info[\u0027status_changed_at\u0027] \u003d args[7]"},{"line_number":642,"context_line":"        return remote_info"},{"line_number":643,"context_line":""},{"line_number":644,"context_line":"    def sync(self, broker, args):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F9Zw8%3D","line":641,"updated":"2014-04-04 19:42:44.000000000","message":"same...","commit_id":"3c8a50e10484f27e832f465df5904d9c486d9fa3"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"3794eed2e942629bea6f55799c9e1f51244006b6","unresolved":false,"context_lines":[{"line_number":638,"context_line":"            \u0027metadata\u0027: remote_metadata,"},{"line_number":639,"context_line":"        }"},{"line_number":640,"context_line":"        if len(args) \u003e 7:"},{"line_number":641,"context_line":"            remote_info[\u0027status_changed_at\u0027] \u003d args[7]"},{"line_number":642,"context_line":"        return remote_info"},{"line_number":643,"context_line":""},{"line_number":644,"context_line":"    def sync(self, broker, args):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWn%2F%2F%2FnM%3D","line":641,"in_reply_to":"AAAAWH%2F9Zw8%3D","updated":"2014-04-08 02:34:29.000000000","message":"Done","commit_id":"3c8a50e10484f27e832f465df5904d9c486d9fa3"}],"swift/container/backend.py":[{"author":{"_account_id":7479,"name":"paul luse","email":"paul.e.luse@intel.com","username":"peluse"},"change_message_id":"a3d6322a56ba02bcbb4da65297ce6c20aaa9b7e1","unresolved":false,"context_lines":[{"line_number":365,"context_line":"            conn.execute(\"\"\""},{"line_number":366,"context_line":"                UPDATE container_stat"},{"line_number":367,"context_line":"                SET storage_policy_index \u003d ?,"},{"line_number":368,"context_line":"                    status_changed_at \u003d MAX(?, status_changed_at)"},{"line_number":369,"context_line":"            \"\"\", (policy_index, timestamp))"},{"line_number":370,"context_line":"            conn.commit()"},{"line_number":371,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F9vKc%3D","line":368,"updated":"2014-04-02 14:34:42.000000000","message":"Can you explain the reason for choosing MAX here?  I thought we were going the other way around but I haven\u0027t finished reviewing the whole thing yet so might be mis-interpreting","commit_id":"653f7c75db231a4ad0d48aaf617fe070809fd42a"},{"author":{"_account_id":7479,"name":"paul luse","email":"paul.e.luse@intel.com","username":"peluse"},"change_message_id":"a3d6322a56ba02bcbb4da65297ce6c20aaa9b7e1","unresolved":false,"context_lines":[{"line_number":567,"context_line":"        \u0027\u0027\u0027)"},{"line_number":568,"context_line":""},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"class ContainerReplicatorRpc(ReplicatorRpc):"},{"line_number":571,"context_line":""},{"line_number":572,"context_line":"    def _parse_sync_args(self, args):"},{"line_number":573,"context_line":"        parent \u003d super(ContainerReplicatorRpc, self)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F9uqg%3D","line":570,"updated":"2014-04-02 14:34:42.000000000","message":"These things we\u0027re calling Rpc, they\u0027re just regular python classes right (no special python remote procedure call features or anything)?","commit_id":"653f7c75db231a4ad0d48aaf617fe070809fd42a"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"64cd65c7b8a7c7eee2361faeceade6daa47198b4","unresolved":false,"context_lines":[{"line_number":360,"context_line":"                UPDATE container_stat"},{"line_number":361,"context_line":"                SET storage_policy_index \u003d ?"},{"line_number":362,"context_line":"            \"\"\", (policy_index,))"},{"line_number":363,"context_line":"            conn.commit()"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        with self.get() as conn:"},{"line_number":366,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F9Zu4%3D","side":"PARENT","line":363,"updated":"2014-04-04 19:42:44.000000000","message":"bah... this too :(","commit_id":"2d0382eb0be47976f9fa983ba1ca7333ea9cdc23"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"64cd65c7b8a7c7eee2361faeceade6daa47198b4","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from swift.common.db import DatabaseBroker, DatabaseConnectionError, \\"},{"line_number":29,"context_line":"    PENDING_CAP, PICKLE_PROTOCOL, utf8encode"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"DATADIR \u003d \u0027containers\u0027"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class ContainerBroker(DatabaseBroker):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F9Zww%3D","line":31,"updated":"2014-04-04 19:42:44.000000000","message":"i thinks this change (or something similar) is on master - need to merge down to feature/ec and rebase","commit_id":"3c8a50e10484f27e832f465df5904d9c486d9fa3"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"64cd65c7b8a7c7eee2361faeceade6daa47198b4","unresolved":false,"context_lines":[{"line_number":179,"context_line":"    def _get_replication_info_missing_defaults(self):"},{"line_number":180,"context_line":"        parent \u003d super(ContainerBroker, self)"},{"line_number":181,"context_line":"        return dict(storage_policy_index\u003d0,"},{"line_number":182,"context_line":"                    **parent._get_replication_info_missing_defaults())"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def _commit_puts_load(self, item_list, entry):"},{"line_number":185,"context_line":"        \"\"\"See :func:`swift.common.db.DatabaseBroker._commit_puts_load`\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F9Zvo%3D","line":182,"updated":"2014-04-04 19:42:44.000000000","message":"this needs an explicit test... particularly for pre-spi schema\u0027s","commit_id":"3c8a50e10484f27e832f465df5904d9c486d9fa3"}],"test/probe/test_container_merge_policy_index.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"64cd65c7b8a7c7eee2361faeceade6daa47198b4","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                                   node, metadata in head_responses)"},{"line_number":104,"context_line":"        self.assert_(len(found_policy_indexes) \u003d\u003d 1,"},{"line_number":105,"context_line":"                     \u0027primary nodes disagree about policy index %r\u0027 %"},{"line_number":106,"context_line":"                     head_responses)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"if __name__ \u003d\u003d \"__main__\":"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F9Zk4%3D","line":106,"updated":"2014-04-04 19:42:44.000000000","message":"I\u0027m not sure exactly which subset of the container/test_replication:TestReplicatorSync.test_sync_*_policy scenarios should be exercised by probetests, but this one is to simple to be the only one I think.  It does sort of validate the code functionally though...","commit_id":"3c8a50e10484f27e832f465df5904d9c486d9fa3"}],"test/unit/__init__.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"64cd65c7b8a7c7eee2361faeceade6daa47198b4","unresolved":false,"context_lines":[{"line_number":42,"context_line":"LEGACY_PATCH_POLICIES \u003d [storage_policy.StoragePolicy(0, \u0027legacy\u0027, True)]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"def patch_policies(thing_or_policies\u003dNone, just_one\u003dFalse):"},{"line_number":46,"context_line":"    if just_one:"},{"line_number":47,"context_line":"        default_policies \u003d LEGACY_PATCH_POLICIES"},{"line_number":48,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F9Zss%3D","line":45,"updated":"2014-04-04 19:42:44.000000000","message":"I feel like there\u0027s a better kwarg name I\u0027m missing than \"just_one\" - maybe legacy, or pre_storage_policy (not really accurate), or maybe policy_index_upgrade???","commit_id":"3c8a50e10484f27e832f465df5904d9c486d9fa3"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"3794eed2e942629bea6f55799c9e1f51244006b6","unresolved":false,"context_lines":[{"line_number":42,"context_line":"LEGACY_PATCH_POLICIES \u003d [storage_policy.StoragePolicy(0, \u0027legacy\u0027, True)]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"def patch_policies(thing_or_policies\u003dNone, just_one\u003dFalse):"},{"line_number":46,"context_line":"    if just_one:"},{"line_number":47,"context_line":"        default_policies \u003d LEGACY_PATCH_POLICIES"},{"line_number":48,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWn%2F%2F%2FlE%3D","line":45,"in_reply_to":"AAAAWH%2F9Zss%3D","updated":"2014-04-08 02:34:29.000000000","message":"Done","commit_id":"3c8a50e10484f27e832f465df5904d9c486d9fa3"}],"test/unit/container/test_replicator.py":[{"author":{"_account_id":7479,"name":"paul luse","email":"paul.e.luse@intel.com","username":"peluse"},"change_message_id":"7dfebbd54e0fad7bf024f5573cc289ee83997f69","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from swift.container import replicator, backend, server"},{"line_number":27,"context_line":"from swift.common.utils import (normalize_timestamp, hash_path,"},{"line_number":28,"context_line":"                                storage_directory)"},{"line_number":29,"context_line":"from swift.common.storage_policy import POLICIES"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"from test.unit import debug_logger, FakeRing, patch_policies"},{"line_number":32,"context_line":"from swift.common.storage_policy import POLICIES"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F9b7E%3D","line":29,"updated":"2014-04-04 14:42:27.000000000","message":"pretty obvious, I know, but this is your Jenkins failure :)  Tried to fix it for you real quick but something odd happened with git review.  Will look at the full patch today","commit_id":"a14df38c54287c3a8270a158213079f8ca56474c"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"64cd65c7b8a7c7eee2361faeceade6daa47198b4","unresolved":false,"context_lines":[{"line_number":355,"context_line":"                continue"},{"line_number":356,"context_line":"            self.assertEqual(remote_info[k], v,"},{"line_number":357,"context_line":"                             \"mismatch remote %s %r !\u003d %r\" % ("},{"line_number":358,"context_line":"                                 k, remote_info[k], v))"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"    def test_sync_status_change(self):"},{"line_number":361,"context_line":"        # setup a local container"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F9Zr0%3D","side":"PARENT","line":358,"updated":"2014-04-04 19:42:44.000000000","message":"hrmm... this looks like something i broke in rebase...","commit_id":"2d0382eb0be47976f9fa983ba1ca7333ea9cdc23"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"3794eed2e942629bea6f55799c9e1f51244006b6","unresolved":false,"context_lines":[{"line_number":355,"context_line":"                continue"},{"line_number":356,"context_line":"            self.assertEqual(remote_info[k], v,"},{"line_number":357,"context_line":"                             \"mismatch remote %s %r !\u003d %r\" % ("},{"line_number":358,"context_line":"                                 k, remote_info[k], v))"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"    def test_sync_status_change(self):"},{"line_number":361,"context_line":"        # setup a local container"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWn%2F%2F%2FkY%3D","side":"PARENT","line":358,"in_reply_to":"AAAAWH%2F9Zr0%3D","updated":"2014-04-08 02:34:29.000000000","message":"Done","commit_id":"2d0382eb0be47976f9fa983ba1ca7333ea9cdc23"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"64cd65c7b8a7c7eee2361faeceade6daa47198b4","unresolved":false,"context_lines":[{"line_number":363,"context_line":"        daemon \u003d replicator.ContainerReplicator({})"},{"line_number":364,"context_line":"        info \u003d broker.get_replication_info()"},{"line_number":365,"context_line":"        success \u003d daemon._repl_to_node(node, broker, \u00270\u0027, info)"},{"line_number":366,"context_line":"        self.assertTrue(success)"},{"line_number":367,"context_line":"        # nothing to do"},{"line_number":368,"context_line":"        self.assertTrue(success)"},{"line_number":369,"context_line":"        self.assertEqual(1, daemon.stats[\u0027no_change\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F9Zrs%3D","line":366,"updated":"2014-04-04 19:42:44.000000000","message":"doubled up here, same rebase problem...","commit_id":"3c8a50e10484f27e832f465df5904d9c486d9fa3"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"3794eed2e942629bea6f55799c9e1f51244006b6","unresolved":false,"context_lines":[{"line_number":363,"context_line":"        daemon \u003d replicator.ContainerReplicator({})"},{"line_number":364,"context_line":"        info \u003d broker.get_replication_info()"},{"line_number":365,"context_line":"        success \u003d daemon._repl_to_node(node, broker, \u00270\u0027, info)"},{"line_number":366,"context_line":"        self.assertTrue(success)"},{"line_number":367,"context_line":"        # nothing to do"},{"line_number":368,"context_line":"        self.assertTrue(success)"},{"line_number":369,"context_line":"        self.assertEqual(1, daemon.stats[\u0027no_change\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWn%2F%2F%2FkM%3D","line":366,"in_reply_to":"AAAAWH%2F9Zrs%3D","updated":"2014-04-08 02:34:29.000000000","message":"Done","commit_id":"3c8a50e10484f27e832f465df5904d9c486d9fa3"}]}
