)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"469397c7af8ba09591b0cb44e6053d4436efe293","unresolved":false,"context_lines":[{"line_number":11,"context_line":"reset_stats are status of containers and objects. I think reset_stats"},{"line_number":12,"context_line":"is called in the AccountReaper __init__ method."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Some test cases lack of assertEqual(), So, I add them."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Iea112962d89ebfa3450f43b2a28ac8e8ed8b07b0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3ac371cc_682cad02","line":14,"updated":"2016-08-16 17:34:13.000000000","message":"A suggestion:\n\nReset AccountReaper stats in __init__\n\nMake the AccountReaper __init__ method reset its stats variables. This saves the unit test having to initialise the stats variables.\n\nAlso add more asserts to some AccountReaper test cases.","commit_id":"8ca856f7c5e997467a1caaaf364fadf3c44b59d0"}],"swift/account/reaper.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"469397c7af8ba09591b0cb44e6053d4436efe293","unresolved":false,"context_lines":[{"line_number":195,"context_line":"                                AccountBroker(os.path.join(hsh_path, fname))"},{"line_number":196,"context_line":"                            if broker.is_status_deleted() and \\"},{"line_number":197,"context_line":"                                    not broker.empty():"},{"line_number":198,"context_line":"                                self.reap_account("},{"line_number":199,"context_line":"                                    broker, partition, nodes,"},{"line_number":200,"context_line":"                                    container_shard\u003dcontainer_shard)"},{"line_number":201,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3ac371cc_280595bb","side":"PARENT","line":198,"updated":"2016-08-16 17:34:13.000000000","message":"here, reap_account is called multiple times per device","commit_id":"22184eb88209e7117abafdafa9956b054ce21cf9"},{"author":{"_account_id":22059,"name":"zheng yin","email":"yin__zheng@163.com","username":"zy751713126"},"change_message_id":"da1b4c550a8b0b9ebce4eeb4d4a277c0b95165e8","unresolved":false,"context_lines":[{"line_number":195,"context_line":"                                AccountBroker(os.path.join(hsh_path, fname))"},{"line_number":196,"context_line":"                            if broker.is_status_deleted() and \\"},{"line_number":197,"context_line":"                                    not broker.empty():"},{"line_number":198,"context_line":"                                self.reap_account("},{"line_number":199,"context_line":"                                    broker, partition, nodes,"},{"line_number":200,"context_line":"                                    container_shard\u003dcontainer_shard)"},{"line_number":201,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3ac371cc_a86cd335","side":"PARENT","line":198,"in_reply_to":"3ac371cc_280595bb","updated":"2016-08-17 01:30:51.000000000","message":"I know.","commit_id":"22184eb88209e7117abafdafa9956b054ce21cf9"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"469397c7af8ba09591b0cb44e6053d4436efe293","unresolved":false,"context_lines":[{"line_number":254,"context_line":"            return False"},{"line_number":255,"context_line":"        account \u003d info[\u0027account\u0027]"},{"line_number":256,"context_line":"        self.logger.info(_(\u0027Beginning pass on account %s\u0027), account)"},{"line_number":257,"context_line":"        self.reset_stats()"},{"line_number":258,"context_line":"        container_limit \u003d 1000"},{"line_number":259,"context_line":"        if container_shard is not None:"},{"line_number":260,"context_line":"            container_limit *\u003d len(nodes)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3ac371cc_48d73123","side":"PARENT","line":257,"updated":"2016-08-16 17:34:13.000000000","message":"no, I think this should stay. need to reset_stats for every account that is reaped otherwise the stats will accumulate.\n\nIt seems there is no test to verify that though :/","commit_id":"22184eb88209e7117abafdafa9956b054ce21cf9"},{"author":{"_account_id":22059,"name":"zheng yin","email":"yin__zheng@163.com","username":"zy751713126"},"change_message_id":"da1b4c550a8b0b9ebce4eeb4d4a277c0b95165e8","unresolved":false,"context_lines":[{"line_number":254,"context_line":"            return False"},{"line_number":255,"context_line":"        account \u003d info[\u0027account\u0027]"},{"line_number":256,"context_line":"        self.logger.info(_(\u0027Beginning pass on account %s\u0027), account)"},{"line_number":257,"context_line":"        self.reset_stats()"},{"line_number":258,"context_line":"        container_limit \u003d 1000"},{"line_number":259,"context_line":"        if container_shard is not None:"},{"line_number":260,"context_line":"            container_limit *\u003d len(nodes)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3ac371cc_888117c6","side":"PARENT","line":257,"in_reply_to":"3ac371cc_48d73123","updated":"2016-08-17 01:30:51.000000000","message":"Thanks Alistair, you are right. reap_account is called multiple times per device. It should stay.","commit_id":"22184eb88209e7117abafdafa9956b054ce21cf9"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"469397c7af8ba09591b0cb44e6053d4436efe293","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        reap_warn_after \u003d float(conf.get(\u0027reap_warn_after\u0027) or 86400 * 30)"},{"line_number":85,"context_line":"        self.reap_not_done_after \u003d reap_warn_after + self.delay_reaping"},{"line_number":86,"context_line":"        self.start_time \u003d time()"},{"line_number":87,"context_line":"        self.reset_stats()"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def get_account_ring(self):"},{"line_number":90,"context_line":"        \"\"\"The account :class:`swift.common.ring.Ring` for the cluster.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3ac371cc_e8e89de4","line":87,"updated":"2016-08-16 17:34:13.000000000","message":"+1","commit_id":"8ca856f7c5e997467a1caaaf364fadf3c44b59d0"}],"test/unit/account/test_reaper.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"e8426d2e8e2085c7ba142338eef3c7f25c64df9c","unresolved":false,"context_lines":[{"line_number":232,"context_line":"            myips \u003d [\u002710.10.10.1\u0027]"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        r \u003d reaper.AccountReaper(conf)"},{"line_number":235,"context_line":"        r.reset_stats()"},{"line_number":236,"context_line":"        r.myips \u003d myips"},{"line_number":237,"context_line":"        if fakelogger:"},{"line_number":238,"context_line":"            r.logger \u003d unit.debug_logger(\u0027test-reaper\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad45d7e_93725248","line":235,"updated":"2016-08-12 14:52:23.000000000","message":"yes, this is neater, but I would feel happier about it if there was test coverage for reset_stats(). Otherwise all the tests using init_reaper rely on an untested reset_stats().\n\nAlso, reset_stats could, I think, be called in the AccountReaper __init__ method, meaning this line can be removed altogether.","commit_id":"8044751f10ee01864ab42d7c09e46b4b15ca722b"},{"author":{"_account_id":22059,"name":"zheng yin","email":"yin__zheng@163.com","username":"zy751713126"},"change_message_id":"4862dbef11fbff3453095dd4602da166dda72cfb","unresolved":false,"context_lines":[{"line_number":232,"context_line":"            myips \u003d [\u002710.10.10.1\u0027]"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        r \u003d reaper.AccountReaper(conf)"},{"line_number":235,"context_line":"        r.reset_stats()"},{"line_number":236,"context_line":"        r.myips \u003d myips"},{"line_number":237,"context_line":"        if fakelogger:"},{"line_number":238,"context_line":"            r.logger \u003d unit.debug_logger(\u0027test-reaper\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac969e8_661d63bd","line":235,"in_reply_to":"9ad45d7e_93725248","updated":"2016-08-13 03:55:57.000000000","message":"Thanks Alistair,  I think you are reasonable. I will change it.","commit_id":"8044751f10ee01864ab42d7c09e46b4b15ca722b"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"469397c7af8ba09591b0cb44e6053d4436efe293","unresolved":false,"context_lines":[{"line_number":306,"context_line":"        self.assertEqual(r.stats_containers_possibly_remaining, 0)"},{"line_number":307,"context_line":"        self.assertEqual(r.stats_objects_deleted, 0)"},{"line_number":308,"context_line":"        self.assertEqual(r.stats_objects_remaining, 0)"},{"line_number":309,"context_line":"        self.assertEqual(r.stats_objects_possibly_remaining, 0)"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    def test_reap_object(self):"},{"line_number":312,"context_line":"        conf \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"3ac371cc_a8b505ef","line":309,"updated":"2016-08-16 17:34:13.000000000","message":"+1","commit_id":"8ca856f7c5e997467a1caaaf364fadf3c44b59d0"}]}
