)]}'
{"swift/container/updater.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"b61f8cc671af88d364ec7184a65c6d0f0e1dc0c3","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        try:"},{"line_number":219,"context_line":"            info \u003d broker.get_info()"},{"line_number":220,"context_line":"        except LockTimeout as e:"},{"line_number":221,"context_line":"            self.logger.error(_(\u0027LockTimeout in process_container: %(e)s\u0027),"},{"line_number":222,"context_line":"                              {\u0027e\u0027: e})"},{"line_number":223,"context_line":"            return"},{"line_number":224,"context_line":"        # Don\u0027t send updates if the container was auto-created since it"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_b3010a3b","line":221,"updated":"2018-05-25 23:56:53.000000000","message":"I might prefer a bit more info about what we were *doing* when we hit the timeout...","commit_id":"1d2ac1756fec52b9171bf7a20b2ec598601f1646"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"12d023c37492272cdb8c216da602caea0bb72d84","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        try:"},{"line_number":219,"context_line":"            info \u003d broker.get_info()"},{"line_number":220,"context_line":"        except LockTimeout as e:"},{"line_number":221,"context_line":"            self.logger.error(_(\u0027LockTimeout in process_container: %(e)s\u0027),"},{"line_number":222,"context_line":"                              {\u0027e\u0027: e})"},{"line_number":223,"context_line":"            return"},{"line_number":224,"context_line":"        # Don\u0027t send updates if the container was auto-created since it"},{"line_number":225,"context_line":"        # definitely doesn\u0027t have up to date statistics."}],"source_content_type":"text/x-python","patch_set":4,"id":"fa0719c6_0978b28e","line":222,"range":{"start_line":221,"start_character":12,"end_line":222,"end_character":39},"updated":"2016-03-22 08:10:44.000000000","message":"We had better use logger.exception instead of logger.error in this case.","commit_id":"1d2ac1756fec52b9171bf7a20b2ec598601f1646"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"2d52716aaec4be78b6e6769e6d9617f51c3f6677","unresolved":false,"context_lines":[{"line_number":234,"context_line":"        broker \u003d ContainerBroker(dbfile, logger\u003dself.logger)"},{"line_number":235,"context_line":"        try:"},{"line_number":236,"context_line":"            info \u003d broker.get_info()"},{"line_number":237,"context_line":"        except LockTimeout as e:"},{"line_number":238,"context_line":"            self.logger.exception(\"Failed to get container info for %s\","},{"line_number":239,"context_line":"                                  dbfile)"},{"line_number":240,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_76704009","line":237,"range":{"start_line":237,"start_character":30,"end_line":237,"end_character":31},"updated":"2018-05-26 03:40:36.000000000","message":"variable is not used here.","commit_id":"84f518ca9153a4a8433ddac9a68b41cb0e695c3b"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"8d6abc1bb98251966935ec2a959fa98920e52c14","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        try:"},{"line_number":236,"context_line":"            info \u003d broker.get_info()"},{"line_number":237,"context_line":"        except LockTimeout:"},{"line_number":238,"context_line":"            self.logger.exception(\"Failed to get container info for %s\","},{"line_number":239,"context_line":"                                  dbfile)"},{"line_number":240,"context_line":"            return"},{"line_number":241,"context_line":"        # Don\u0027t send updates if the container was auto-created since it"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_3952b93c","line":238,"range":{"start_line":238,"start_character":35,"end_line":238,"end_character":67},"updated":"2018-05-26 17:23:16.000000000","message":"I kind of want the words \"lock\" and \"timeout\" to appear somewhere in here. This message sounds like it\u0027d come from a Pokemon exception handler.","commit_id":"15042e9e4796a41802f9f198cca3a8b65c4ffa5c"}],"test/unit/container/test_updater.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"b61f8cc671af88d364ec7184a65c6d0f0e1dc0c3","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        ee \u003d IOError(\"lock failed\")"},{"line_number":144,"context_line":"        ee.errno \u003d errno.EAGAIN"},{"line_number":145,"context_line":"        mock_lock.side_effect \u003d ee"},{"line_number":146,"context_line":"        cu.logger \u003d FakeLogger()"},{"line_number":147,"context_line":"        with mock.patch(\u0027swift.container.updater.ContainerBroker\u0027"},{"line_number":148,"context_line":"                        ) as mock_broker:"},{"line_number":149,"context_line":"            mock_broker.return_value \u003d cb"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_33cdfa30","line":146,"range":{"start_line":146,"start_character":20,"end_line":146,"end_character":30},"updated":"2018-05-25 23:56:53.000000000","message":"There was a change a while back that got rid of this import in this module... I\u0027ll push a rebase to clean up.","commit_id":"1d2ac1756fec52b9171bf7a20b2ec598601f1646"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"b61f8cc671af88d364ec7184a65c6d0f0e1dc0c3","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        cu.logger \u003d FakeLogger()"},{"line_number":147,"context_line":"        with mock.patch(\u0027swift.container.updater.ContainerBroker\u0027"},{"line_number":148,"context_line":"                        ) as mock_broker:"},{"line_number":149,"context_line":"            mock_broker.return_value \u003d cb"},{"line_number":150,"context_line":"            cu.run_once()"},{"line_number":151,"context_line":"        log_lines \u003d cu.logger.get_lines_for_level(\u0027error\u0027)"},{"line_number":152,"context_line":"        msg \u003d \u0027devices/sda1/containers/subdir/.lock\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_13f1de6b","line":149,"updated":"2018-05-25 23:56:53.000000000","message":"We do this... to get the shorter timeout, yeah?\n\nBut it still forces the test to take at least a 1 second -- and three if it also hits the recon cache timeout...\n\nMaybe it\u0027d be better to mock out get_info to raise a timeout?","commit_id":"1d2ac1756fec52b9171bf7a20b2ec598601f1646"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"12d023c37492272cdb8c216da602caea0bb72d84","unresolved":false,"context_lines":[{"line_number":150,"context_line":"            cu.run_once()"},{"line_number":151,"context_line":"        log_lines \u003d cu.logger.get_lines_for_level(\u0027error\u0027)"},{"line_number":152,"context_line":"        msg \u003d \u0027devices/sda1/containers/subdir/.lock\u0027"},{"line_number":153,"context_line":"        self.assertTrue(msg in log_lines[0])"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def test_run_once(self):"},{"line_number":156,"context_line":"        cu \u003d container_updater.ContainerUpdater({"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa0719c6_e991fe9a","line":153,"range":{"start_line":153,"start_character":13,"end_line":153,"end_character":23},"updated":"2016-03-22 08:10:44.000000000","message":"(nit) Is assertIn better?","commit_id":"1d2ac1756fec52b9171bf7a20b2ec598601f1646"}]}
