)]}'
{"swift/common/db_replicator.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"d451788cee6a22ede1f42f36f01d63fdf6290945","unresolved":false,"context_lines":[{"line_number":551,"context_line":"                    break"},{"line_number":552,"context_line":"        for node in repl_nodes:"},{"line_number":553,"context_line":"            if is_handoff_node and node \u003d\u003d local_dev:"},{"line_number":554,"context_line":"                continue"},{"line_number":555,"context_line":"            different_region \u003d False"},{"line_number":556,"context_line":"            if local_dev and local_dev[\u0027region\u0027] !\u003d node[\u0027region\u0027]:"},{"line_number":557,"context_line":"                # This additional information will help later if we"}],"source_content_type":"text/x-python","patch_set":7,"id":"bff0334d_a03c44c8","line":554,"updated":"2017-04-07 21:42:36.000000000","message":"this is wrong and the test that fails with *just* node \u003d\u003d local_dev is trying to show you it should be:\n\n    if node \u003d\u003d local_dev and current_part \u003d\u003d ring_part\n\nUnfortunately that failing test uses a primary node to demonstrate the failure issue - keeping this extra state only passes tests by happenstance.\n\nhttps://gist.github.com/clayg/d11f31fc53d37370e6c034e4e1a86998\n\nI wrote another test to demonstrate the issue with change:\n\nhttps://gist.github.com/clayg/f0d88e7d1cd7c14db61a5e27a966484f\n\nUnfortunately this uncovered a regression introduced into FakeRing that changed it to not have handoff nodes by default :\u0027(\n\nhttps://review.openstack.org/#/c/186735/15","commit_id":"e75527542f5c35e50c598c19bab9585ceaa50093"},{"author":{"_account_id":23449,"name":"Pavel Kvasnička","email":"pavel.kvasnicka@firma.seznam.cz","username":"PavelK"},"change_message_id":"890928daeb811d9f7ff4dc1237eb18f0154a769e","unresolved":false,"context_lines":[{"line_number":551,"context_line":"                    break"},{"line_number":552,"context_line":"        for node in repl_nodes:"},{"line_number":553,"context_line":"            if is_handoff_node and node \u003d\u003d local_dev:"},{"line_number":554,"context_line":"                continue"},{"line_number":555,"context_line":"            different_region \u003d False"},{"line_number":556,"context_line":"            if local_dev and local_dev[\u0027region\u0027] !\u003d node[\u0027region\u0027]:"},{"line_number":557,"context_line":"                # This additional information will help later if we"}],"source_content_type":"text/x-python","patch_set":7,"id":"bff0334d_b0b5a880","line":554,"in_reply_to":"bff0334d_a03c44c8","updated":"2017-04-08 20:58:20.000000000","message":"I didn\u0027t deal with moving replica on handoff to the correct location when we don\u0027t delete them until primaries are healthy. But I will remember it in next cleanup patch, thanks.","commit_id":"e75527542f5c35e50c598c19bab9585ceaa50093"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"d451788cee6a22ede1f42f36f01d63fdf6290945","unresolved":false,"context_lines":[{"line_number":564,"context_line":"                                             different_region)"},{"line_number":565,"context_line":"            except DriveNotMounted:"},{"line_number":566,"context_line":"                try:"},{"line_number":567,"context_line":"                    repl_nodes.append(next(more_nodes))"},{"line_number":568,"context_line":"                except StopIteration:"},{"line_number":569,"context_line":"                    self.logger.error("},{"line_number":570,"context_line":"                        _(\u0027There is not next handoff node to reach replica \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"bff0334d_e0836ccb","line":567,"updated":"2017-04-07 21:42:36.000000000","message":"when we\u0027re on the first handoff and this *appends* the first handoff we replicate to ourselves - luckily we don\u0027t *delete* ourselves because we *never* delete when we hit a DriveNotMounted","commit_id":"e75527542f5c35e50c598c19bab9585ceaa50093"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"cdd770b09bc56b440b58d502d45718c1e9c6ccc8","unresolved":false,"context_lines":[{"line_number":564,"context_line":"                except StopIteration:"},{"line_number":565,"context_line":"                    self.logger.error("},{"line_number":566,"context_line":"                        _(\u0027There is not next handoff node to reach replica \u0027"},{"line_number":567,"context_line":"                          \u0027count for partition %s\u0027),"},{"line_number":568,"context_line":"                        partition)"},{"line_number":569,"context_line":"                self.logger.error(_(\u0027ERROR Remote drive not mounted %s\u0027), node)"},{"line_number":570,"context_line":"            except (Exception, Timeout):"}],"source_content_type":"text/x-python","patch_set":9,"id":"bff0334d_180b2e24","line":567,"updated":"2017-04-11 01:32:47.000000000","message":"We could reword this sentence to be something like:\n\n  ERROR There are not enough handoff nodes to reach replica count for partition %s","commit_id":"4263f24547e0427d91a31b7cb2598cb8e697bdbb"}],"test/probe/test_db_replication.py":[{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"800495ffdf400a52c6898c841be4f7bb41febfba","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class TestDBReplication(ReplProbeTest):"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    acct_cont_required_devices \u003d 8"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def get_db_files(self, server):"},{"line_number":39,"context_line":"        files \u003d []"}],"source_content_type":"text/x-python","patch_set":2,"id":"bff0334d_6d877b63","line":36,"range":{"start_line":36,"start_character":4,"end_line":36,"end_character":34},"updated":"2017-04-07 07:24:00.000000000","message":"I\u0027m bit worried about this test will always be skipped at the non-voting probe test gate[1] because IIRC the vagrant swift all in one will prepare 4 disks in default. On the other hand, to test the bug this patch attempts to fix, more than 4 devices required because the handoff device could trigger the 4th redundant object at the 5th device if it exists.\n\n1: https://8b86aea46fb38e6450f2-0e5f4c086da474abc1df58826577db2f.ssl.cf1.rackcdn.com/454174/6307/probetests/result.html","commit_id":"26aefec777bb412f38b86cd8e79685c629e5cc25"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"800495ffdf400a52c6898c841be4f7bb41febfba","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                devices, files \u003d self.get_db_files(\u0027container\u0027)"},{"line_number":81,"context_line":"                self.assertEqual(3, len(files))"},{"line_number":82,"context_line":"        finally:"},{"line_number":83,"context_line":"            self.revive_drive(unmounted_dev)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bff0334d_10afe2e3","line":83,"range":{"start_line":83,"start_character":12,"end_line":83,"end_character":44},"updated":"2017-04-07 07:24:00.000000000","message":"I found an issue with kill_drive/revive_drive here can be failed with mount_check \u003d false environment. That is because, in the mount_check\u003dfalse environment, the replicators (to say correct, the servers requested by replicators) will create the killed device as a new directory (object-replicator creates dev/objects), and then, the renamer in the revive process will go to fail as \n\n OSError: [Errno 21] Is a directory\n\nSo that IMO, we should have handler to detect the config, and then if mount_check\u003dfalse for configs, this test should be skipped rather than an error.\n\nOr, from IRC discussion with Clay, [1][2] will fix the issue on the mount_check\u003dFalse environment. Those change could be generalized more (e.g. fix also account/object-replicator)\n\n1: https://gist.github.com/clayg/411374f07801bf9d2cd70aee0bf75936\n2: https://gist.github.com/bloodeagle40234/3a3f51a7b2584c6475df0bc76c6f7dad","commit_id":"26aefec777bb412f38b86cd8e79685c629e5cc25"}]}
