)]}'
{"swift/cli/relinker.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"0636bb0c130e6a3d4ce7d3c67f834da89d3af23e","unresolved":true,"context_lines":[{"line_number":484,"context_line":"                    # special case for duplicate tombstones, see:"},{"line_number":485,"context_line":"                    # https://bugs.launchpad.net/swift/+bug/1921718"},{"line_number":486,"context_line":"                    # https://bugs.launchpad.net/swift/+bug/1934142"},{"line_number":487,"context_line":"                    if self.check_same_timestamps(old_file, new_file):"},{"line_number":488,"context_line":"                        ok \u003d True"},{"line_number":489,"context_line":"                        self.logger.debug("},{"line_number":490,"context_line":"                            \"Relinking%s: tolerating different inodes with \""}],"source_content_type":"text/x-python","patch_set":1,"id":"a2b935e2_3bc57c1c","line":487,"updated":"2021-06-30 22:12:39.000000000","message":"we probably wouldn\u0027t hit the EEXIST unless they have the same timestamp/filename - i\u0027m guessing older or newer tombstone would have linked in just fine.","commit_id":"f7fbc48b587237f795982bfd338d8e2c25002a22"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"766f393ea32425dc8ae89baea9039a1e87de9dc9","unresolved":false,"context_lines":[{"line_number":484,"context_line":"                    # special case for duplicate tombstones, see:"},{"line_number":485,"context_line":"                    # https://bugs.launchpad.net/swift/+bug/1921718"},{"line_number":486,"context_line":"                    # https://bugs.launchpad.net/swift/+bug/1934142"},{"line_number":487,"context_line":"                    if self.check_same_timestamps(old_file, new_file):"},{"line_number":488,"context_line":"                        ok \u003d True"},{"line_number":489,"context_line":"                        self.logger.debug("},{"line_number":490,"context_line":"                            \"Relinking%s: tolerating different inodes with \""}],"source_content_type":"text/x-python","patch_set":1,"id":"8a34d644_c74f3dc9","line":487,"in_reply_to":"a2b935e2_3bc57c1c","updated":"2021-07-01 11:07:05.000000000","message":"Done","commit_id":"f7fbc48b587237f795982bfd338d8e2c25002a22"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"49f08044ea4d5b28d7b74e5b7a674755303c0f06","unresolved":true,"context_lines":[{"line_number":811,"context_line":"    # avoid errors after upgrade"},{"line_number":812,"context_line":"    parser.add_argument(\u0027--link-check-limit\u0027, type\u003dnon_negative_int,"},{"line_number":813,"context_line":"                        default\u003dNone, dest\u003d\u0027link_check_limit\u0027,"},{"line_number":814,"context_line":"                        help\u003dargparse.SUPPRESS)"},{"line_number":815,"context_line":""},{"line_number":816,"context_line":"    args \u003d parser.parse_args(args)"},{"line_number":817,"context_line":"    if args.conf_file:"}],"source_content_type":"text/x-python","patch_set":1,"id":"f426f451_01c592cf","line":814,"updated":"2021-06-30 17:00:11.000000000","message":"I should add a check and emit a deprecation warning if this option is given","commit_id":"f7fbc48b587237f795982bfd338d8e2c25002a22"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"766f393ea32425dc8ae89baea9039a1e87de9dc9","unresolved":false,"context_lines":[{"line_number":811,"context_line":"    # avoid errors after upgrade"},{"line_number":812,"context_line":"    parser.add_argument(\u0027--link-check-limit\u0027, type\u003dnon_negative_int,"},{"line_number":813,"context_line":"                        default\u003dNone, dest\u003d\u0027link_check_limit\u0027,"},{"line_number":814,"context_line":"                        help\u003dargparse.SUPPRESS)"},{"line_number":815,"context_line":""},{"line_number":816,"context_line":"    args \u003d parser.parse_args(args)"},{"line_number":817,"context_line":"    if args.conf_file:"}],"source_content_type":"text/x-python","patch_set":1,"id":"b215bf5e_092db347","line":814,"in_reply_to":"49f34592_216c01c3","updated":"2021-07-01 11:07:05.000000000","message":"Done","commit_id":"f7fbc48b587237f795982bfd338d8e2c25002a22"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"6d8537f44c519acd7d308fa407ff31913a7d9ec3","unresolved":true,"context_lines":[{"line_number":811,"context_line":"    # avoid errors after upgrade"},{"line_number":812,"context_line":"    parser.add_argument(\u0027--link-check-limit\u0027, type\u003dnon_negative_int,"},{"line_number":813,"context_line":"                        default\u003dNone, dest\u003d\u0027link_check_limit\u0027,"},{"line_number":814,"context_line":"                        help\u003dargparse.SUPPRESS)"},{"line_number":815,"context_line":""},{"line_number":816,"context_line":"    args \u003d parser.parse_args(args)"},{"line_number":817,"context_line":"    if args.conf_file:"}],"source_content_type":"text/x-python","patch_set":1,"id":"49f34592_216c01c3","line":814,"in_reply_to":"f426f451_01c592cf","updated":"2021-07-01 05:51:11.000000000","message":"YES! just a \u0027(deprecated)\u0027 in the help should be enough. Or (arguement ignored, exists for backwards compatibility)","commit_id":"f7fbc48b587237f795982bfd338d8e2c25002a22"}],"test/unit/cli/test_relinker.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"0636bb0c130e6a3d4ce7d3c67f834da89d3af23e","unresolved":true,"context_lines":[{"line_number":1641,"context_line":"            fd.write(older_filepath)"},{"line_number":1642,"context_line":"            write_metadata(fd, {\u0027name\u0027: \u0027junk\u0027,"},{"line_number":1643,"context_line":"                                \u0027Content-Length\u0027: len(older_filepath),"},{"line_number":1644,"context_line":"                                \u0027X-Timestamp\u0027: self.obj_ts.internal})"},{"line_number":1645,"context_line":"        self._do_link_test(\u0027relink\u0027,"},{"line_number":1646,"context_line":"                           ((\u0027ts\u0027, 0),),"},{"line_number":1647,"context_line":"                           ((\u0027ts\u0027, 0),),"}],"source_content_type":"text/x-python","patch_set":1,"id":"cee46ff6_d755703e","line":1644,"updated":"2021-06-30 22:12:39.000000000","message":"if we just use filenames you can probably pull this out!","commit_id":"f7fbc48b587237f795982bfd338d8e2c25002a22"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"766f393ea32425dc8ae89baea9039a1e87de9dc9","unresolved":false,"context_lines":[{"line_number":1641,"context_line":"            fd.write(older_filepath)"},{"line_number":1642,"context_line":"            write_metadata(fd, {\u0027name\u0027: \u0027junk\u0027,"},{"line_number":1643,"context_line":"                                \u0027Content-Length\u0027: len(older_filepath),"},{"line_number":1644,"context_line":"                                \u0027X-Timestamp\u0027: self.obj_ts.internal})"},{"line_number":1645,"context_line":"        self._do_link_test(\u0027relink\u0027,"},{"line_number":1646,"context_line":"                           ((\u0027ts\u0027, 0),),"},{"line_number":1647,"context_line":"                           ((\u0027ts\u0027, 0),),"}],"source_content_type":"text/x-python","patch_set":1,"id":"78c9d86c_7409a0fd","line":1644,"in_reply_to":"cee46ff6_d755703e","updated":"2021-07-01 11:07:05.000000000","message":"Done","commit_id":"f7fbc48b587237f795982bfd338d8e2c25002a22"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"0636bb0c130e6a3d4ce7d3c67f834da89d3af23e","unresolved":true,"context_lines":[{"line_number":1657,"context_line":"                      info_lines)"},{"line_number":1658,"context_line":"        with open(new_filepath, \u0027r\u0027) as fd:"},{"line_number":1659,"context_line":"            self.assertEqual(old_filepath, fd.read())"},{"line_number":1660,"context_line":"        self.assertTrue(os.path.exists(older_filepath))"},{"line_number":1661,"context_line":""},{"line_number":1662,"context_line":"    def test_relink_conflicting_ts_is_linked_to_part_power_minus_1(self):"},{"line_number":1663,"context_line":"        # link from next partition to current-1 partition;"}],"source_content_type":"text/x-python","patch_set":1,"id":"cd72ff19_4e0e3810","line":1660,"updated":"2021-06-30 22:12:39.000000000","message":"AIUI, this will still get unlinked by clean-up","commit_id":"f7fbc48b587237f795982bfd338d8e2c25002a22"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"766f393ea32425dc8ae89baea9039a1e87de9dc9","unresolved":false,"context_lines":[{"line_number":1657,"context_line":"                      info_lines)"},{"line_number":1658,"context_line":"        with open(new_filepath, \u0027r\u0027) as fd:"},{"line_number":1659,"context_line":"            self.assertEqual(old_filepath, fd.read())"},{"line_number":1660,"context_line":"        self.assertTrue(os.path.exists(older_filepath))"},{"line_number":1661,"context_line":""},{"line_number":1662,"context_line":"    def test_relink_conflicting_ts_is_linked_to_part_power_minus_1(self):"},{"line_number":1663,"context_line":"        # link from next partition to current-1 partition;"}],"source_content_type":"text/x-python","patch_set":1,"id":"418245b7_7b14f9a7","line":1660,"in_reply_to":"cd72ff19_4e0e3810","updated":"2021-07-01 11:07:05.000000000","message":"Ack","commit_id":"f7fbc48b587237f795982bfd338d8e2c25002a22"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"0636bb0c130e6a3d4ce7d3c67f834da89d3af23e","unresolved":true,"context_lines":[{"line_number":2206,"context_line":"        self.assertEqual([], warning_lines)"},{"line_number":2207,"context_line":"        with open(new_filepath, \u0027r\u0027) as fd:"},{"line_number":2208,"context_line":"            self.assertEqual(older_filepath, fd.read())"},{"line_number":2209,"context_line":"        self.assertFalse(os.path.exists(older_filepath))"},{"line_number":2210,"context_line":""},{"line_number":2211,"context_line":"    def test_cleanup_conflicting_older_data_file(self):"},{"line_number":2212,"context_line":"        # older conflicting file isn\u0027t relevant so cleanup succeeds"}],"source_content_type":"text/x-python","patch_set":1,"id":"97ce3ca1_d7f41d0c","line":2209,"updated":"2021-06-30 22:12:39.000000000","message":"yeah, we test the cleanup too.","commit_id":"f7fbc48b587237f795982bfd338d8e2c25002a22"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"766f393ea32425dc8ae89baea9039a1e87de9dc9","unresolved":false,"context_lines":[{"line_number":2206,"context_line":"        self.assertEqual([], warning_lines)"},{"line_number":2207,"context_line":"        with open(new_filepath, \u0027r\u0027) as fd:"},{"line_number":2208,"context_line":"            self.assertEqual(older_filepath, fd.read())"},{"line_number":2209,"context_line":"        self.assertFalse(os.path.exists(older_filepath))"},{"line_number":2210,"context_line":""},{"line_number":2211,"context_line":"    def test_cleanup_conflicting_older_data_file(self):"},{"line_number":2212,"context_line":"        # older conflicting file isn\u0027t relevant so cleanup succeeds"}],"source_content_type":"text/x-python","patch_set":1,"id":"704cf8fc_9368b6ae","line":2209,"in_reply_to":"97ce3ca1_d7f41d0c","updated":"2021-07-01 11:07:05.000000000","message":"Ack","commit_id":"f7fbc48b587237f795982bfd338d8e2c25002a22"}]}
