)]}'
{"swift/common/ring/builder.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"10c43f9e27e1a861bba75cf28a3fd06df3761cf9","unresolved":false,"context_lines":[{"line_number":743,"context_line":"        \"\"\""},{"line_number":744,"context_line":"        for part in range(self.parts):"},{"line_number":745,"context_line":"            self._last_part_moves[part] \u003d 0xff"},{"line_number":746,"context_line":"        self._last_part_moves_epoch \u003d 0"},{"line_number":747,"context_line":""},{"line_number":748,"context_line":"    def get_part_devices(self, part):"},{"line_number":749,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_8018df85","side":"PARENT","line":746,"updated":"2016-07-25 18:30:12.000000000","message":"seems a *little* brittle to bypass the reset of the epoch state just because the _last_part_moves array is empty/None.","commit_id":"574a666a437d119b0fedb351a9b5e2de34db29c9"}],"test/unit/cli/test_ringbuilder.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"054ed49fc5e66ea637e3a1f94b9cfd1f0ede0052","unresolved":false,"context_lines":[{"line_number":1718,"context_line":"        ring_invalid_re \u003d re.compile(\"Ring file .*\\.ring\\.gz is invalid\")"},{"line_number":1719,"context_line":"        self.assertTrue(ring_invalid_re.findall(mock_stdout.getvalue()))"},{"line_number":1720,"context_line":""},{"line_number":1721,"context_line":"    def test_pretend_min_part_hours_passed(self):"},{"line_number":1722,"context_line":"        self.run_srb(\"create\", 8, 3, 1)"},{"line_number":1723,"context_line":"        argv_pretend \u003d [\"\", self.tmpfile, \"pretend_min_part_hours_passed\"]"},{"line_number":1724,"context_line":"        # pretend_min_part_hours_passed should success, even not rebalanced"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_20fd62b1","line":1721,"updated":"2016-08-05 13:49:02.000000000","message":"ok. with change reverted this test fails with \n\n  \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nERROR: test_pretend_min_part_hours_passed (test.unit.cli.test_ringbuilder.TestCommands)\n----------------------------------------------------------------------\nTraceback (most recent call last):\n  File \"/home/anc/0dev/swift/test/unit/cli/test_ringbuilder.py\", line 1725, in test_pretend_min_part_hours_passed\n    self.assertSystemExit(EXIT_SUCCESS, ringbuilder.main, argv_pretend)\n  File \"/home/anc/0dev/swift/test/unit/cli/test_ringbuilder.py\", line 144, in assertSystemExit\n    func(*argv)\n  File \"/home/anc/0dev/swift/swift/cli/ringbuilder.py\", line 1252, in main\n    getattr(Commands, command, Commands.unknown)()\n  File \"/home/anc/0dev/swift/swift/cli/ringbuilder.py\", line 1086, in pretend_min_part_hours_passed\n    builder.pretend_min_part_hours_passed()\n  File \"/home/anc/0dev/swift/swift/common/ring/builder.py\", line 745, in pretend_min_part_hours_passed\n    self._last_part_moves[part] \u003d 0xff\nTypeError: \u0027NoneType\u0027 object does not support item assignment","commit_id":"c1c18da82c8e8d03c4e5b52910661632f8acfe46"}]}
