)]}'
{"nova/tests/fixtures.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"77e58e282c6f0d5f8603d9cadeb386b39820486a","unresolved":false,"context_lines":[{"line_number":2153,"context_line":"class HostNameWeigher(weights.BaseHostWeigher):"},{"line_number":2154,"context_line":"    \"\"\"Weigher to make the scheduler host selection deterministic."},{"line_number":2155,"context_line":""},{"line_number":2156,"context_line":"    Note that this weigher is supposed to be used it via"},{"line_number":2157,"context_line":"    HostNameWeigherFixture."},{"line_number":2158,"context_line":"    \"\"\""},{"line_number":2159,"context_line":"    # Weights is set via the fixture"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_3f55e21d","line":2156,"range":{"start_line":2156,"start_character":50,"end_line":2156,"end_character":52},"updated":"2019-09-23 15:17:05.000000000","message":"strike","commit_id":"bf8249daf8a44ab6a36ae2a6aa5e360250a885a1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f652c4609ed1f79daf9ca1b3ae80fdb3cdf39419","unresolved":false,"context_lines":[{"line_number":2181,"context_line":"        #   and in cleanup the config change enabling the fixture is rolled"},{"line_number":2182,"context_line":"        #   back by the ConfPatcher. So a test using this fixture cannot"},{"line_number":2183,"context_line":"        #   interfere with a test not using this fixture."},{"line_number":2184,"context_line":"        # * Test running in the same text executor are running in the same"},{"line_number":2185,"context_line":"        #   process in sequence. But if two test cases using this fixture each"},{"line_number":2186,"context_line":"        #   fixture setUp will make sure that the weights are set according to"},{"line_number":2187,"context_line":"        #   the given test\u0027s need. So subsequent test cannot interfere."}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_4269e588","line":2184,"range":{"start_line":2184,"start_character":12,"end_line":2184,"end_character":16},"updated":"2019-09-23 16:02:39.000000000","message":"Tests","commit_id":"bf8249daf8a44ab6a36ae2a6aa5e360250a885a1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f652c4609ed1f79daf9ca1b3ae80fdb3cdf39419","unresolved":false,"context_lines":[{"line_number":2181,"context_line":"        #   and in cleanup the config change enabling the fixture is rolled"},{"line_number":2182,"context_line":"        #   back by the ConfPatcher. So a test using this fixture cannot"},{"line_number":2183,"context_line":"        #   interfere with a test not using this fixture."},{"line_number":2184,"context_line":"        # * Test running in the same text executor are running in the same"},{"line_number":2185,"context_line":"        #   process in sequence. But if two test cases using this fixture each"},{"line_number":2186,"context_line":"        #   fixture setUp will make sure that the weights are set according to"},{"line_number":2187,"context_line":"        #   the given test\u0027s need. So subsequent test cannot interfere."}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_e20571c3","line":2184,"range":{"start_line":2184,"start_character":37,"end_line":2184,"end_character":41},"updated":"2019-09-23 16:02:39.000000000","message":"test","commit_id":"bf8249daf8a44ab6a36ae2a6aa5e360250a885a1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f652c4609ed1f79daf9ca1b3ae80fdb3cdf39419","unresolved":false,"context_lines":[{"line_number":2182,"context_line":"        #   back by the ConfPatcher. So a test using this fixture cannot"},{"line_number":2183,"context_line":"        #   interfere with a test not using this fixture."},{"line_number":2184,"context_line":"        # * Test running in the same text executor are running in the same"},{"line_number":2185,"context_line":"        #   process in sequence. But if two test cases using this fixture each"},{"line_number":2186,"context_line":"        #   fixture setUp will make sure that the weights are set according to"},{"line_number":2187,"context_line":"        #   the given test\u0027s need. So subsequent test cannot interfere."},{"line_number":2188,"context_line":"        HostNameWeigher.weights \u003d self.weights"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_0209addb","line":2185,"range":{"start_line":2185,"start_character":55,"end_line":2185,"end_character":60},"updated":"2019-09-23 16:02:39.000000000","message":"are using","commit_id":"bf8249daf8a44ab6a36ae2a6aa5e360250a885a1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f652c4609ed1f79daf9ca1b3ae80fdb3cdf39419","unresolved":false,"context_lines":[{"line_number":2184,"context_line":"        # * Test running in the same text executor are running in the same"},{"line_number":2185,"context_line":"        #   process in sequence. But if two test cases using this fixture each"},{"line_number":2186,"context_line":"        #   fixture setUp will make sure that the weights are set according to"},{"line_number":2187,"context_line":"        #   the given test\u0027s need. So subsequent test cannot interfere."},{"line_number":2188,"context_line":"        HostNameWeigher.weights \u003d self.weights"},{"line_number":2189,"context_line":"        self.useFixture(ConfPatcher("},{"line_number":2190,"context_line":"            weight_classes\u003d[__name__ + \u0027.HostNameWeigher\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_82f4bdd0","line":2187,"range":{"start_line":2187,"start_character":49,"end_line":2187,"end_character":53},"updated":"2019-09-23 16:02:39.000000000","message":"tests","commit_id":"bf8249daf8a44ab6a36ae2a6aa5e360250a885a1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"77e58e282c6f0d5f8603d9cadeb386b39820486a","unresolved":false,"context_lines":[{"line_number":2185,"context_line":"        #   process in sequence. But if two test cases using this fixture each"},{"line_number":2186,"context_line":"        #   fixture setUp will make sure that the weights are set according to"},{"line_number":2187,"context_line":"        #   the given test\u0027s need. So subsequent test cannot interfere."},{"line_number":2188,"context_line":"        HostNameWeigher.weights \u003d self.weights"},{"line_number":2189,"context_line":"        self.useFixture(ConfPatcher("},{"line_number":2190,"context_line":"            weight_classes\u003d[__name__ + \u0027.HostNameWeigher\u0027],"},{"line_number":2191,"context_line":"            group\u003d\u0027filter_scheduler\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_9f141650","line":2188,"range":{"start_line":2188,"start_character":8,"end_line":2188,"end_character":46},"updated":"2019-09-23 15:17:05.000000000","message":"wonder if this should be done with a monkeypatch...","commit_id":"bf8249daf8a44ab6a36ae2a6aa5e360250a885a1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0a4623bcbdfa4d39dee7220b6a150df4f1bf6459","unresolved":false,"context_lines":[{"line_number":2185,"context_line":"        #   process in sequence. But if two test cases using this fixture each"},{"line_number":2186,"context_line":"        #   fixture setUp will make sure that the weights are set according to"},{"line_number":2187,"context_line":"        #   the given test\u0027s need. So subsequent test cannot interfere."},{"line_number":2188,"context_line":"        HostNameWeigher.weights \u003d self.weights"},{"line_number":2189,"context_line":"        self.useFixture(ConfPatcher("},{"line_number":2190,"context_line":"            weight_classes\u003d[__name__ + \u0027.HostNameWeigher\u0027],"},{"line_number":2191,"context_line":"            group\u003d\u0027filter_scheduler\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_a22219a3","line":2188,"range":{"start_line":2188,"start_character":8,"end_line":2188,"end_character":46},"in_reply_to":"3fa7e38b_9f141650","updated":"2019-09-23 15:19:46.000000000","message":"Do you see some gap in my reasoning in the comment above?","commit_id":"bf8249daf8a44ab6a36ae2a6aa5e360250a885a1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f652c4609ed1f79daf9ca1b3ae80fdb3cdf39419","unresolved":false,"context_lines":[{"line_number":2185,"context_line":"        #   process in sequence. But if two test cases using this fixture each"},{"line_number":2186,"context_line":"        #   fixture setUp will make sure that the weights are set according to"},{"line_number":2187,"context_line":"        #   the given test\u0027s need. So subsequent test cannot interfere."},{"line_number":2188,"context_line":"        HostNameWeigher.weights \u003d self.weights"},{"line_number":2189,"context_line":"        self.useFixture(ConfPatcher("},{"line_number":2190,"context_line":"            weight_classes\u003d[__name__ + \u0027.HostNameWeigher\u0027],"},{"line_number":2191,"context_line":"            group\u003d\u0027filter_scheduler\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_c2eab5aa","line":2188,"range":{"start_line":2188,"start_character":8,"end_line":2188,"end_character":46},"in_reply_to":"3fa7e38b_a22219a3","updated":"2019-09-23 16:02:39.000000000","message":"Well... I\u0027m not convinced that \"[tests] running in the same [test] executor are running in the same process in sequence\". But if that\u0027s true, then I suppose this ought to work fine. However, it\u0027s still interfering with other tests -- just not in a way that we care about since, if we\u0027re not using this fixture, we don\u0027t care how hosts are weighed [1]. But even so, using something that reverts the \"global\" change on cleanup would just be better form.\n\n[1] Unless we do. For example, it looks like nova.tests.functional.test_server_group is also using weighers. As a preventative measure, it might be worth blowing up here if filter_scheduler.weight_classes is already set.","commit_id":"bf8249daf8a44ab6a36ae2a6aa5e360250a885a1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"dba1d66c91fb42fa01f219d8f282d77662e83348","unresolved":false,"context_lines":[{"line_number":2185,"context_line":"        #   process in sequence. But if two test cases using this fixture each"},{"line_number":2186,"context_line":"        #   fixture setUp will make sure that the weights are set according to"},{"line_number":2187,"context_line":"        #   the given test\u0027s need. So subsequent test cannot interfere."},{"line_number":2188,"context_line":"        HostNameWeigher.weights \u003d self.weights"},{"line_number":2189,"context_line":"        self.useFixture(ConfPatcher("},{"line_number":2190,"context_line":"            weight_classes\u003d[__name__ + \u0027.HostNameWeigher\u0027],"},{"line_number":2191,"context_line":"            group\u003d\u0027filter_scheduler\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_a90bd57a","line":2188,"range":{"start_line":2188,"start_character":8,"end_line":2188,"end_character":46},"in_reply_to":"3fa7e38b_c2eab5aa","updated":"2019-09-24 09:18:04.000000000","message":"\u003e Well... I\u0027m not convinced that \"[tests] running in the same [test]\n \u003e executor are running in the same process in sequence\". But if\n \u003e that\u0027s true, then I suppose this ought to work fine. However, it\u0027s\n\nToday we are not threading our tests. But yeah this is shaky. Let me try to write something that mocks the instantiation of the weighers when the scheduler starts...\n\n\n \u003e still interfering with other tests -- just not in a way that we\n \u003e care about since, if we\u0027re not using this fixture, we don\u0027t care\n \u003e how hosts are weighed [1]. But even so, using something that\n \u003e reverts the \"global\" change on cleanup would just be better form.\n \u003e \n\nWe do revert the global change in a sense that we revert the config change so our weigher will not be part of the next test execution if that test is not using this fixture. If the next test is using this fixture too then when the fixture is set up in the next test the weigeher is initialized again.\n\n\n \u003e [1] Unless we do. For example, it looks like nova.tests.functional.test_server_group\n \u003e is also using weighers. As a preventative measure, it might be\n \u003e worth blowing up here if filter_scheduler.weight_classes is already\n \u003e set.\n\nThe ConfPatcher in L2190 reverts the weigher [filter_scheduler].weight_classes settings during cleanup.","commit_id":"bf8249daf8a44ab6a36ae2a6aa5e360250a885a1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5d89cfb681986dd32e665c3e7594e6c411ed9800","unresolved":false,"context_lines":[{"line_number":2191,"context_line":"        super(HostNameWeigherFixture, self).setUp()"},{"line_number":2192,"context_line":"        # Make sure that when the scheduler instantiate the HostNameWeigher it"},{"line_number":2193,"context_line":"        # is initialized with the weights that is configured in this fixture"},{"line_number":2194,"context_line":"        self.useFixture("},{"line_number":2195,"context_line":"            fixtures.MockPatchObject("},{"line_number":2196,"context_line":"                HostNameWeigher, \u0027get_weights\u0027, return_value\u003dself.weights))"},{"line_number":2197,"context_line":"        # Make sure that the scheduler loads the HostNameWeigher and only that"},{"line_number":2198,"context_line":"        self.useFixture(ConfPatcher("}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_46a244ff","line":2195,"range":{"start_line":2194,"start_character":24,"end_line":2195,"end_character":37},"updated":"2019-09-24 14:42:00.000000000","message":"nit: it annoys me that this isn\u0027t on the previous line like the \u0027useFixture\u0027 call below","commit_id":"9131ff8d262016aa95c53b42d22b5bff877dd825"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f0b0bb234ceb4e4299dc00f1120b1a714879acae","unresolved":false,"context_lines":[{"line_number":2191,"context_line":"        super(HostNameWeigherFixture, self).setUp()"},{"line_number":2192,"context_line":"        # Make sure that when the scheduler instantiate the HostNameWeigher it"},{"line_number":2193,"context_line":"        # is initialized with the weights that is configured in this fixture"},{"line_number":2194,"context_line":"        self.useFixture("},{"line_number":2195,"context_line":"            fixtures.MockPatchObject("},{"line_number":2196,"context_line":"                HostNameWeigher, \u0027get_weights\u0027, return_value\u003dself.weights))"},{"line_number":2197,"context_line":"        # Make sure that the scheduler loads the HostNameWeigher and only that"},{"line_number":2198,"context_line":"        self.useFixture(ConfPatcher("}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_5c53e83f","line":2195,"range":{"start_line":2194,"start_character":24,"end_line":2195,"end_character":37},"in_reply_to":"3fa7e38b_46a244ff","updated":"2019-09-25 08:00:57.000000000","message":"I have no good reason to annoy you. :) Done.","commit_id":"9131ff8d262016aa95c53b42d22b5bff877dd825"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e8d4149f97f81a504a12f3501b2c95cfcc25ad7d","unresolved":false,"context_lines":[{"line_number":2189,"context_line":""},{"line_number":2190,"context_line":"    def setUp(self):"},{"line_number":2191,"context_line":"        super(HostNameWeigherFixture, self).setUp()"},{"line_number":2192,"context_line":"        # Make sure that when the scheduler instantiate the HostNameWeigher it"},{"line_number":2193,"context_line":"        # is initialized with the weights that is configured in this fixture"},{"line_number":2194,"context_line":"        self.useFixture(fixtures.MockPatchObject("},{"line_number":2195,"context_line":"            HostNameWeigher, \u0027get_weights\u0027, return_value\u003dself.weights))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_ca7a99ef","line":2192,"range":{"start_line":2192,"start_character":44,"end_line":2192,"end_character":55},"updated":"2019-09-25 20:59:43.000000000","message":"instantiates","commit_id":"60b097a5ef695790647bba23669a91b6118bbdc2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e8d4149f97f81a504a12f3501b2c95cfcc25ad7d","unresolved":false,"context_lines":[{"line_number":2190,"context_line":"    def setUp(self):"},{"line_number":2191,"context_line":"        super(HostNameWeigherFixture, self).setUp()"},{"line_number":2192,"context_line":"        # Make sure that when the scheduler instantiate the HostNameWeigher it"},{"line_number":2193,"context_line":"        # is initialized with the weights that is configured in this fixture"},{"line_number":2194,"context_line":"        self.useFixture(fixtures.MockPatchObject("},{"line_number":2195,"context_line":"            HostNameWeigher, \u0027get_weights\u0027, return_value\u003dself.weights))"},{"line_number":2196,"context_line":"        # Make sure that the scheduler loads the HostNameWeigher and only that"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_ea7f55dd","line":2193,"range":{"start_line":2193,"start_character":47,"end_line":2193,"end_character":49},"updated":"2019-09-25 20:59:43.000000000","message":"are","commit_id":"60b097a5ef695790647bba23669a91b6118bbdc2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e8d4149f97f81a504a12f3501b2c95cfcc25ad7d","unresolved":false,"context_lines":[{"line_number":2191,"context_line":"        super(HostNameWeigherFixture, self).setUp()"},{"line_number":2192,"context_line":"        # Make sure that when the scheduler instantiate the HostNameWeigher it"},{"line_number":2193,"context_line":"        # is initialized with the weights that is configured in this fixture"},{"line_number":2194,"context_line":"        self.useFixture(fixtures.MockPatchObject("},{"line_number":2195,"context_line":"            HostNameWeigher, \u0027get_weights\u0027, return_value\u003dself.weights))"},{"line_number":2196,"context_line":"        # Make sure that the scheduler loads the HostNameWeigher and only that"},{"line_number":2197,"context_line":"        self.useFixture(ConfPatcher("},{"line_number":2198,"context_line":"            weight_classes\u003d[__name__ + \u0027.HostNameWeigher\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_6a6b651d","line":2195,"range":{"start_line":2194,"start_character":8,"end_line":2195,"end_character":71},"updated":"2019-09-25 20:59:43.000000000","message":"Yeah, nice, this makes me more confident about the scoping of the weigher.","commit_id":"60b097a5ef695790647bba23669a91b6118bbdc2"}],"nova/tests/functional/regressions/test_bug_1702454.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5d89cfb681986dd32e665c3e7594e6c411ed9800","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        # Define a very basic scheduler that only verifies if host is down."},{"line_number":78,"context_line":"        self.flags(enabled_filters\u003d[\u0027ComputeFilter\u0027],"},{"line_number":79,"context_line":"                   group\u003d\u0027filter_scheduler\u0027)"},{"line_number":80,"context_line":"        # NOTE(sbauza): Use the a weigher so we are sure that"},{"line_number":81,"context_line":"        # we prefer first host1 for the boot request and forget about any"},{"line_number":82,"context_line":"        # other weigher."},{"line_number":83,"context_line":"        # Host2 should only be preferred over host3 if and only if that\u0027s the"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_0681ac4a","line":80,"range":{"start_line":80,"start_character":32,"end_line":80,"end_character":41},"updated":"2019-09-24 14:42:00.000000000","message":"HostNameWeigherFixture","commit_id":"9131ff8d262016aa95c53b42d22b5bff877dd825"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f0b0bb234ceb4e4299dc00f1120b1a714879acae","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        # Define a very basic scheduler that only verifies if host is down."},{"line_number":78,"context_line":"        self.flags(enabled_filters\u003d[\u0027ComputeFilter\u0027],"},{"line_number":79,"context_line":"                   group\u003d\u0027filter_scheduler\u0027)"},{"line_number":80,"context_line":"        # NOTE(sbauza): Use the a weigher so we are sure that"},{"line_number":81,"context_line":"        # we prefer first host1 for the boot request and forget about any"},{"line_number":82,"context_line":"        # other weigher."},{"line_number":83,"context_line":"        # Host2 should only be preferred over host3 if and only if that\u0027s the"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_1c49f089","line":80,"range":{"start_line":80,"start_character":32,"end_line":80,"end_character":41},"in_reply_to":"3fa7e38b_0681ac4a","updated":"2019-09-25 08:00:57.000000000","message":"Done","commit_id":"9131ff8d262016aa95c53b42d22b5bff877dd825"}],"nova/tests/functional/test_servers.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5d89cfb681986dd32e665c3e7594e6c411ed9800","unresolved":false,"context_lines":[{"line_number":6324,"context_line":"        self.admin_api.post_extra_spec("},{"line_number":6325,"context_line":"            self.flavor_with_group_policy_bigger[\u0027id\u0027],"},{"line_number":6326,"context_line":"            {\u0027extra_specs\u0027: {\u0027group_policy\u0027: \u0027isolate\u0027}})"},{"line_number":6327,"context_line":"        print(CONF.filter_scheduler.weight_classes)"},{"line_number":6328,"context_line":""},{"line_number":6329,"context_line":"    def _check_allocation("},{"line_number":6330,"context_line":"            self, server, compute_rp_uuid, non_qos_port, qos_port,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_26eb8813","line":6327,"range":{"start_line":6327,"start_character":0,"end_line":6327,"end_character":51},"updated":"2019-09-24 14:42:00.000000000","message":"wuh wuh","commit_id":"9131ff8d262016aa95c53b42d22b5bff877dd825"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f0b0bb234ceb4e4299dc00f1120b1a714879acae","unresolved":false,"context_lines":[{"line_number":6324,"context_line":"        self.admin_api.post_extra_spec("},{"line_number":6325,"context_line":"            self.flavor_with_group_policy_bigger[\u0027id\u0027],"},{"line_number":6326,"context_line":"            {\u0027extra_specs\u0027: {\u0027group_policy\u0027: \u0027isolate\u0027}})"},{"line_number":6327,"context_line":"        print(CONF.filter_scheduler.weight_classes)"},{"line_number":6328,"context_line":""},{"line_number":6329,"context_line":"    def _check_allocation("},{"line_number":6330,"context_line":"            self, server, compute_rp_uuid, non_qos_port, qos_port,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_7c57c427","line":6327,"range":{"start_line":6327,"start_character":0,"end_line":6327,"end_character":51},"in_reply_to":"3fa7e38b_26eb8813","updated":"2019-09-25 08:00:57.000000000","message":"Done","commit_id":"9131ff8d262016aa95c53b42d22b5bff877dd825"}]}
