)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"69516282168ee02c275e68ef4ae89a8224a90022","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"b72d7836_25c7f2e8","updated":"2022-03-29 19:57:33.000000000","message":"I think we have more work to do here.","commit_id":"e197f6b950b5294a29ec488586150aba10b99c1e"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"8a2b9e842346ca9b879e33dd28c32245f719d0c4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"1795406e_fa8ccc4d","updated":"2022-03-30 16:49:34.000000000","message":"I was unable to reproduce this in the master branch. Are you able to verify that this bug still exists in master?","commit_id":"e197f6b950b5294a29ec488586150aba10b99c1e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"8696451c496fc4641507667c94a6e39ef6c07401","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"7eaf3bc3_941f7d48","in_reply_to":"1795406e_fa8ccc4d","updated":"2022-03-30 19:52:00.000000000","message":"I was able to reproduce this with a patch chain one behind master (Remove unused downgrade functions). I have updated the bug with my reproducer steps and SHAs","commit_id":"e197f6b950b5294a29ec488586150aba10b99c1e"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"e9dc6ba874149356cafd05c8bf5128ccd3b6155d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"e8b80fe3_3f5fd89d","in_reply_to":"7eaf3bc3_941f7d48","updated":"2022-03-30 23:27:10.000000000","message":"Confirmed that there were two different issues with this code. One should already be fixed, but there is also a race condition with the code where if the previous request isn\u0027t finished yet, it\u0027s possible that an unintended sql error is raised. This happens (or can happen) because we are not protecting this code against race conditions.","commit_id":"e197f6b950b5294a29ec488586150aba10b99c1e"},{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"0cc8906b223897e0e6aaa79a1c42941beb42d149","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"9b3d0fa6_092bcb01","in_reply_to":"e8b80fe3_3f5fd89d","updated":"2022-04-13 21:50:38.000000000","message":"Yes, I\u0027m able to reproduce this in either the tempest tests and with unit tests.","commit_id":"e197f6b950b5294a29ec488586150aba10b99c1e"},{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"0cc8906b223897e0e6aaa79a1c42941beb42d149","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"bdb94016_2eb2ec73","updated":"2022-04-13 21:50:38.000000000","message":"Should be set in the next patch upload. In reference to \nhttps://opendev.org/openstack/designate/commit/2c9460505d07d0e46765a552b637e5a3296b667b it appears to be added quite sometime ago, 8 years, it explains what is going on.","commit_id":"3fb3b5631fd02be9d1b404bcadd050fb72e7f7d9"},{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"21e809df1881569ef9f45f2236850422813543d2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"cbafac89_81408873","updated":"2022-04-14 16:22:38.000000000","message":"Need to remove the DummyException class","commit_id":"9b422119b38a6078c44589a0f458d77d5e776f19"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"18776c29ffb46a2a033a5e0df1ffb265ee51efb0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"0527a51f_fa3974a2","updated":"2022-04-14 22:32:47.000000000","message":"I think the tests need to be a bit more specific. They are not proving that the reported bug is resolved.","commit_id":"2b39a386a7b49281007d3eefd88f3fcbdbb5cf53"},{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"d5ef72e598e66b8a42c4c36bd2993b0c84e2e18b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"b02032d6_032ab5e6","in_reply_to":"0527a51f_fa3974a2","updated":"2022-04-18 20:27:24.000000000","message":"done - from Erik test code","commit_id":"2b39a386a7b49281007d3eefd88f3fcbdbb5cf53"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"9bf72e11933f94d4ce10d78253dcc49e9db4321d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"4c5987a9_6fcfb965","updated":"2022-04-25 19:43:30.000000000","message":"LGTM, thanks!","commit_id":"d705c5d6b861f319096afdd3ad50a2100651b064"},{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"7485e3e983152f00fd54b9473efdf90e075e7766","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"ee1b819a_9fb77af0","updated":"2022-04-20 20:19:27.000000000","message":"recheck - intermittent PTR error test_show_floatingip_ptr_impersonate_another_project[id-d3128a92-e3bd-11eb-a097-74e5f9e2a801]","commit_id":"d705c5d6b861f319096afdd3ad50a2100651b064"}],"designate/central/service.py":[{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"bf78cfb0964f133534d705b42b8ff0b147b62b8c","unresolved":true,"context_lines":[{"line_number":2747,"context_line":""},{"line_number":2748,"context_line":"        return created_zone_import"},{"line_number":2749,"context_line":""},{"line_number":2750,"context_line":"    def _import_zone(self, context, zone_import, request_body):"},{"line_number":2751,"context_line":"        zone \u003d None"},{"line_number":2752,"context_line":"        try:"},{"line_number":2753,"context_line":"            dnspython_zone \u003d dnszone.from_text("}],"source_content_type":"text/x-python","patch_set":1,"id":"1411b9b1_90144f54","line":2750,"updated":"2022-04-03 01:34:39.000000000","message":"We just need to wrap this function with the rpc.expected_exceptions decorator. The problem is that this function is executed outside of the local thread scope, so the decorator for create_zone_import does not apply, causing create_zone to think it is responding to an rpc call.\n\ntl;dr\nAdding\n@rpc.expected_exceptions()\nto _import_zone should fix this, at least for the master branch.","commit_id":"e197f6b950b5294a29ec488586150aba10b99c1e"},{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"0cc8906b223897e0e6aaa79a1c42941beb42d149","unresolved":false,"context_lines":[{"line_number":2747,"context_line":""},{"line_number":2748,"context_line":"        return created_zone_import"},{"line_number":2749,"context_line":""},{"line_number":2750,"context_line":"    def _import_zone(self, context, zone_import, request_body):"},{"line_number":2751,"context_line":"        zone \u003d None"},{"line_number":2752,"context_line":"        try:"},{"line_number":2753,"context_line":"            dnspython_zone \u003d dnszone.from_text("}],"source_content_type":"text/x-python","patch_set":1,"id":"c82f043a_7e9d9c46","line":2750,"in_reply_to":"1411b9b1_90144f54","updated":"2022-04-13 21:50:38.000000000","message":"I\u0027ve added the @rpc.expected_exception() on _import_zone, and I see no change. I will leave it in.","commit_id":"e197f6b950b5294a29ec488586150aba10b99c1e"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"7f80a2b2dc7a871b1dcd2abc923fbd294045b98b","unresolved":true,"context_lines":[{"line_number":2802,"context_line":"            except exceptions.OverQuota:"},{"line_number":2803,"context_line":"                zone_import.status \u003d \u0027ERROR\u0027"},{"line_number":2804,"context_line":"                zone_import.message \u003d \u0027Quota exceeded during zone import.\u0027"},{"line_number":2805,"context_line":"            except messaging.rpc.dispatcher.ExpectedException as e:"},{"line_number":2806,"context_line":"                # This situation can occurred in conjuction with the zone"},{"line_number":2807,"context_line":"                # creation and presents itself as a confussing underlying"},{"line_number":2808,"context_line":"                # exception to another exception becuase of its wrapped"}],"source_content_type":"text/x-python","patch_set":1,"id":"df08621d_a4bf7c2d","line":2805,"updated":"2022-03-29 18:38:53.000000000","message":"This feels off. I don\u0027t think we should have to catch ExpectedException here. I will need to think about this a bit, but to start could you add some test coverage for this?","commit_id":"e197f6b950b5294a29ec488586150aba10b99c1e"},{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"0cc8906b223897e0e6aaa79a1c42941beb42d149","unresolved":false,"context_lines":[{"line_number":2802,"context_line":"            except exceptions.OverQuota:"},{"line_number":2803,"context_line":"                zone_import.status \u003d \u0027ERROR\u0027"},{"line_number":2804,"context_line":"                zone_import.message \u003d \u0027Quota exceeded during zone import.\u0027"},{"line_number":2805,"context_line":"            except messaging.rpc.dispatcher.ExpectedException as e:"},{"line_number":2806,"context_line":"                # This situation can occurred in conjuction with the zone"},{"line_number":2807,"context_line":"                # creation and presents itself as a confussing underlying"},{"line_number":2808,"context_line":"                # exception to another exception becuase of its wrapped"}],"source_content_type":"text/x-python","patch_set":1,"id":"f17b58ea_c36b92f6","line":2805,"in_reply_to":"df08621d_a4bf7c2d","updated":"2022-04-13 21:50:38.000000000","message":"Done","commit_id":"e197f6b950b5294a29ec488586150aba10b99c1e"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"69516282168ee02c275e68ef4ae89a8224a90022","unresolved":true,"context_lines":[{"line_number":2812,"context_line":"                    \"zone creation.\""},{"line_number":2813,"context_line":"                )"},{"line_number":2814,"context_line":"                zone_import.message \u003d ("},{"line_number":2815,"context_line":"                    \"An rpc dispatcher expected exception occurred during \""},{"line_number":2816,"context_line":"                    \"zone creation. %s\" % str(e)[:130]"},{"line_number":2817,"context_line":"                )"},{"line_number":2818,"context_line":"                zone_import.status \u003d \u0027ERROR\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"61a2171f_4b27a37b","line":2815,"updated":"2022-03-29 19:57:33.000000000","message":"This doesn\u0027t really give the user any more information about \"why\" than the undefined error did. Plus, if it\u0027s an \"expected\" exception, why is it an \u0027ERROR\u0027?\nThe bug says they were getting the \"undefined\" error due to importing a zone that already exists. Can\u0027t we get that information bubbled up here?","commit_id":"e197f6b950b5294a29ec488586150aba10b99c1e"},{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"0cc8906b223897e0e6aaa79a1c42941beb42d149","unresolved":false,"context_lines":[{"line_number":2812,"context_line":"                    \"zone creation.\""},{"line_number":2813,"context_line":"                )"},{"line_number":2814,"context_line":"                zone_import.message \u003d ("},{"line_number":2815,"context_line":"                    \"An rpc dispatcher expected exception occurred during \""},{"line_number":2816,"context_line":"                    \"zone creation. %s\" % str(e)[:130]"},{"line_number":2817,"context_line":"                )"},{"line_number":2818,"context_line":"                zone_import.status \u003d \u0027ERROR\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"78d95ec0_9e223a31","line":2815,"in_reply_to":"61a2171f_4b27a37b","updated":"2022-04-13 21:50:38.000000000","message":"the actual exception is in the e.exc_info","commit_id":"e197f6b950b5294a29ec488586150aba10b99c1e"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"3d2af073fd7bb9bf9a41fee5161f0ea5ec74e558","unresolved":true,"context_lines":[{"line_number":2802,"context_line":"            except exceptions.OverQuota:"},{"line_number":2803,"context_line":"                zone_import.status \u003d \u0027ERROR\u0027"},{"line_number":2804,"context_line":"                zone_import.message \u003d \u0027Quota exceeded during zone import.\u0027"},{"line_number":2805,"context_line":"            except messaging.rpc.dispatcher.ExpectedException as e:"},{"line_number":2806,"context_line":"                # This handles the rpc notification whereby it encapsulates"},{"line_number":2807,"context_line":"                # an expected exception raised by an RPC endpoint."},{"line_number":2808,"context_line":"                # In this situation we are only catching the zone"}],"source_content_type":"text/x-python","patch_set":2,"id":"fe9c1095_bb10b797","line":2805,"updated":"2022-04-12 20:38:14.000000000","message":"We should never catch messaging.rpc.dispatcher.ExpectedException exceptions. This means something is wrong with the error handling.","commit_id":"3fb3b5631fd02be9d1b404bcadd050fb72e7f7d9"},{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"0cc8906b223897e0e6aaa79a1c42941beb42d149","unresolved":false,"context_lines":[{"line_number":2802,"context_line":"            except exceptions.OverQuota:"},{"line_number":2803,"context_line":"                zone_import.status \u003d \u0027ERROR\u0027"},{"line_number":2804,"context_line":"                zone_import.message \u003d \u0027Quota exceeded during zone import.\u0027"},{"line_number":2805,"context_line":"            except messaging.rpc.dispatcher.ExpectedException as e:"},{"line_number":2806,"context_line":"                # This handles the rpc notification whereby it encapsulates"},{"line_number":2807,"context_line":"                # an expected exception raised by an RPC endpoint."},{"line_number":2808,"context_line":"                # In this situation we are only catching the zone"}],"source_content_type":"text/x-python","patch_set":2,"id":"e8d08595_071e92bd","line":2805,"in_reply_to":"fe9c1095_bb10b797","updated":"2022-04-13 21:50:38.000000000","message":"I agree , I will look into this further.","commit_id":"3fb3b5631fd02be9d1b404bcadd050fb72e7f7d9"}],"designate/exceptions.py":[{"author":{"_account_id":13995,"name":"Nate Johnston","email":"nate.johnston@redhat.com","username":"natejohnston"},"change_message_id":"e1f8e880f6bc3b0dc69e2b1fd72eb93663085b5f","unresolved":true,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"class Duplicate(DesignateException):"},{"line_number":264,"context_line":"    expected \u003d True"},{"line_number":265,"context_line":"    error_code \u003d 409"},{"line_number":266,"context_line":"    error_type \u003d \u0027duplicate\u0027"},{"line_number":267,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"b27be93e_17ec507c","line":264,"updated":"2022-04-13 15:56:13.000000000","message":"If duplicate errors shouldn\u0027t be wrapped by expected_exceptions perhaps we should revisit this?","commit_id":"3fb3b5631fd02be9d1b404bcadd050fb72e7f7d9"},{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"5198bb823778d0fed90faf3195196dc1cd6fcc73","unresolved":false,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"class Duplicate(DesignateException):"},{"line_number":264,"context_line":"    expected \u003d True"},{"line_number":265,"context_line":"    error_code \u003d 409"},{"line_number":266,"context_line":"    error_type \u003d \u0027duplicate\u0027"},{"line_number":267,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"30ef9748_fdd860ab","line":264,"in_reply_to":"8f9517a3_c819234f","updated":"2022-04-13 21:51:06.000000000","message":"see next patch","commit_id":"3fb3b5631fd02be9d1b404bcadd050fb72e7f7d9"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"c5a0f2410a5b8a2ee0f1fe0891606be3d0c62592","unresolved":true,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"class Duplicate(DesignateException):"},{"line_number":264,"context_line":"    expected \u003d True"},{"line_number":265,"context_line":"    error_code \u003d 409"},{"line_number":266,"context_line":"    error_type \u003d \u0027duplicate\u0027"},{"line_number":267,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"8f9517a3_c819234f","line":264,"in_reply_to":"b27be93e_17ec507c","updated":"2022-04-13 16:07:17.000000000","message":"So this is correct. The issue is that the code is executed in a different thread scope, so there is no @rpc.expected_exceptions() decorator to handle the error, since the decorator is local to the thread.","commit_id":"3fb3b5631fd02be9d1b404bcadd050fb72e7f7d9"}],"designate/tests/test_central/test_service.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"18776c29ffb46a2a033a5e0df1ffb265ee51efb0","unresolved":true,"context_lines":[{"line_number":3415,"context_line":"                                               mock_update_zone_import,"},{"line_number":3416,"context_line":"                                               mock_dnszone_from_text):"},{"line_number":3417,"context_line":""},{"line_number":3418,"context_line":"        # the second set of exceptions for the create_zone"},{"line_number":3419,"context_line":"        context \u003d self.get_context(project_id\u003dutils.generate_uuid())"},{"line_number":3420,"context_line":"        request_body \u003d self.get_zonefile_fixture()"},{"line_number":3421,"context_line":"        values \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"7d7e9194_6c6fd000","line":3418,"updated":"2022-04-14 22:32:47.000000000","message":"nit: I think this comment is wrong, I think you are meaning to test the zone conversion from text block in the _import_zone method.","commit_id":"2b39a386a7b49281007d3eefd88f3fcbdbb5cf53"},{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"d5ef72e598e66b8a42c4c36bd2993b0c84e2e18b","unresolved":false,"context_lines":[{"line_number":3415,"context_line":"                                               mock_update_zone_import,"},{"line_number":3416,"context_line":"                                               mock_dnszone_from_text):"},{"line_number":3417,"context_line":""},{"line_number":3418,"context_line":"        # the second set of exceptions for the create_zone"},{"line_number":3419,"context_line":"        context \u003d self.get_context(project_id\u003dutils.generate_uuid())"},{"line_number":3420,"context_line":"        request_body \u003d self.get_zonefile_fixture()"},{"line_number":3421,"context_line":"        values \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"e4acbe7b_c3f6a718","line":3418,"in_reply_to":"7d7e9194_6c6fd000","updated":"2022-04-18 20:27:24.000000000","message":"Done","commit_id":"2b39a386a7b49281007d3eefd88f3fcbdbb5cf53"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"18776c29ffb46a2a033a5e0df1ffb265ee51efb0","unresolved":true,"context_lines":[{"line_number":3427,"context_line":"        }"},{"line_number":3428,"context_line":"        zone_import \u003d objects.ZoneImport(**values)"},{"line_number":3429,"context_line":""},{"line_number":3430,"context_line":"        mock_dnszone_from_text.side_effect \u003d [exceptions.BadRequest(),"},{"line_number":3431,"context_line":"                                              Exception(\u0027boom\u0027)]"},{"line_number":3432,"context_line":""},{"line_number":3433,"context_line":"        LOG.debug(\"Testing zone import exceptions: BadRequest\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"ebec0c2b_d96321c0","line":3430,"range":{"start_line":3430,"start_character":57,"end_line":3430,"end_character":69},"updated":"2022-04-14 22:32:47.000000000","message":"nit: If you don\u0027t need to pass in any parameters to the exception, you don\u0027t need to execute it here, you can just specify the exception:\n[exceptions.BadRequest]","commit_id":"2b39a386a7b49281007d3eefd88f3fcbdbb5cf53"},{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"d5ef72e598e66b8a42c4c36bd2993b0c84e2e18b","unresolved":false,"context_lines":[{"line_number":3427,"context_line":"        }"},{"line_number":3428,"context_line":"        zone_import \u003d objects.ZoneImport(**values)"},{"line_number":3429,"context_line":""},{"line_number":3430,"context_line":"        mock_dnszone_from_text.side_effect \u003d [exceptions.BadRequest(),"},{"line_number":3431,"context_line":"                                              Exception(\u0027boom\u0027)]"},{"line_number":3432,"context_line":""},{"line_number":3433,"context_line":"        LOG.debug(\"Testing zone import exceptions: BadRequest\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"817e1ba7_4dcf75e3","line":3430,"range":{"start_line":3430,"start_character":57,"end_line":3430,"end_character":69},"in_reply_to":"ebec0c2b_d96321c0","updated":"2022-04-18 20:27:24.000000000","message":"Done","commit_id":"2b39a386a7b49281007d3eefd88f3fcbdbb5cf53"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"18776c29ffb46a2a033a5e0df1ffb265ee51efb0","unresolved":true,"context_lines":[{"line_number":3434,"context_line":"        zone_import \u003d objects.ZoneImport(**values)"},{"line_number":3435,"context_line":"        self.central_service._import_zone(context, zone_import, request_body)"},{"line_number":3436,"context_line":"        self.assertEqual(\u0027ERROR\u0027, zone_import.status)"},{"line_number":3437,"context_line":"        self.assertIsNotNone(zone_import.message)"},{"line_number":3438,"context_line":""},{"line_number":3439,"context_line":"        LOG.debug(\"Testing zone import exceptions: Undefined\")"},{"line_number":3440,"context_line":"        zone_import \u003d objects.ZoneImport(**values)"}],"source_content_type":"text/x-python","patch_set":4,"id":"903c85ee_e627eed6","line":3437,"updated":"2022-04-14 22:32:47.000000000","message":"I am not a huge fan of string matching in tests, but these assertions don\u0027t prove that the correct exception handler fired. These could all be \"An undefined error occurred\" and this test would still pass.","commit_id":"2b39a386a7b49281007d3eefd88f3fcbdbb5cf53"},{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"d5ef72e598e66b8a42c4c36bd2993b0c84e2e18b","unresolved":false,"context_lines":[{"line_number":3434,"context_line":"        zone_import \u003d objects.ZoneImport(**values)"},{"line_number":3435,"context_line":"        self.central_service._import_zone(context, zone_import, request_body)"},{"line_number":3436,"context_line":"        self.assertEqual(\u0027ERROR\u0027, zone_import.status)"},{"line_number":3437,"context_line":"        self.assertIsNotNone(zone_import.message)"},{"line_number":3438,"context_line":""},{"line_number":3439,"context_line":"        LOG.debug(\"Testing zone import exceptions: Undefined\")"},{"line_number":3440,"context_line":"        zone_import \u003d objects.ZoneImport(**values)"}],"source_content_type":"text/x-python","patch_set":4,"id":"8d23fb43_0b4a51f9","line":3437,"in_reply_to":"903c85ee_e627eed6","updated":"2022-04-18 20:27:24.000000000","message":"Done","commit_id":"2b39a386a7b49281007d3eefd88f3fcbdbb5cf53"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"18776c29ffb46a2a033a5e0df1ffb265ee51efb0","unresolved":true,"context_lines":[{"line_number":3477,"context_line":"        zone_import \u003d objects.ZoneImport(**values)"},{"line_number":3478,"context_line":"        self.central_service._import_zone(context, zone_import, request_body)"},{"line_number":3479,"context_line":"        self.assertEqual(\u0027ERROR\u0027, zone_import.status)"},{"line_number":3480,"context_line":"        self.assertIsNotNone(zone_import.message)"},{"line_number":3481,"context_line":""},{"line_number":3482,"context_line":"        # 3rd - InvalidTTL"},{"line_number":3483,"context_line":"        LOG.debug(\"Testing zone import exceptions: InvalidTTL\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"7150bb3d_a7dc187d","line":3480,"updated":"2022-04-14 22:32:47.000000000","message":"Same here, these assertions don\u0027t prove that the duplicatezone handler fired.","commit_id":"2b39a386a7b49281007d3eefd88f3fcbdbb5cf53"},{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"d5ef72e598e66b8a42c4c36bd2993b0c84e2e18b","unresolved":false,"context_lines":[{"line_number":3477,"context_line":"        zone_import \u003d objects.ZoneImport(**values)"},{"line_number":3478,"context_line":"        self.central_service._import_zone(context, zone_import, request_body)"},{"line_number":3479,"context_line":"        self.assertEqual(\u0027ERROR\u0027, zone_import.status)"},{"line_number":3480,"context_line":"        self.assertIsNotNone(zone_import.message)"},{"line_number":3481,"context_line":""},{"line_number":3482,"context_line":"        # 3rd - InvalidTTL"},{"line_number":3483,"context_line":"        LOG.debug(\"Testing zone import exceptions: InvalidTTL\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"64099161_ccf5e50b","line":3480,"in_reply_to":"7150bb3d_a7dc187d","updated":"2022-04-18 20:27:24.000000000","message":"Done","commit_id":"2b39a386a7b49281007d3eefd88f3fcbdbb5cf53"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"49641bb25474ee8a71f0288c6724e03e13b13188","unresolved":true,"context_lines":[{"line_number":3412,"context_line":"    def test_create_zone_import_duplicate_threading(self):"},{"line_number":3413,"context_line":"        context \u003d self.get_context(project_id\u003dutils.generate_uuid())"},{"line_number":3414,"context_line":"        request_body \u003d self.get_zonefile_fixture()"},{"line_number":3415,"context_line":"        zone_import \u003d self.central_service.create_zone_import(context,"},{"line_number":3416,"context_line":"                                                              request_body)"},{"line_number":3417,"context_line":"        self.wait_for_import(zone_import.id)"},{"line_number":3418,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"c1637d7e_b159f713","line":3415,"updated":"2022-04-19 20:28:39.000000000","message":"Actually, we might want to remove this first create zone import and just keep the one inside the nested function. I believe this makes it harder to reproduce the bug because the race condition wont happen.\n\ntl;dr remove lines 3413-3418","commit_id":"bbef41ce8a5506c91590bd8b8250755cee98ca4d"},{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"25963ab841ad76b87ba2b5b76fbc3bfffa3a2f8f","unresolved":false,"context_lines":[{"line_number":3412,"context_line":"    def test_create_zone_import_duplicate_threading(self):"},{"line_number":3413,"context_line":"        context \u003d self.get_context(project_id\u003dutils.generate_uuid())"},{"line_number":3414,"context_line":"        request_body \u003d self.get_zonefile_fixture()"},{"line_number":3415,"context_line":"        zone_import \u003d self.central_service.create_zone_import(context,"},{"line_number":3416,"context_line":"                                                              request_body)"},{"line_number":3417,"context_line":"        self.wait_for_import(zone_import.id)"},{"line_number":3418,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"beadf0f6_d38bfa74","line":3415,"in_reply_to":"8bff4f2f_81fedd8a","updated":"2022-04-20 18:04:19.000000000","message":"In my testing the other check at #L3499 always triggered the bug, at least for me.","commit_id":"bbef41ce8a5506c91590bd8b8250755cee98ca4d"},{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"350dede7ba7de4fa2fe5e242de5dfc128d790265","unresolved":false,"context_lines":[{"line_number":3412,"context_line":"    def test_create_zone_import_duplicate_threading(self):"},{"line_number":3413,"context_line":"        context \u003d self.get_context(project_id\u003dutils.generate_uuid())"},{"line_number":3414,"context_line":"        request_body \u003d self.get_zonefile_fixture()"},{"line_number":3415,"context_line":"        zone_import \u003d self.central_service.create_zone_import(context,"},{"line_number":3416,"context_line":"                                                              request_body)"},{"line_number":3417,"context_line":"        self.wait_for_import(zone_import.id)"},{"line_number":3418,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ebaaa666_0d4e4be9","line":3415,"in_reply_to":"c1637d7e_b159f713","updated":"2022-04-20 16:02:15.000000000","message":"I think its best to keeps this or we will need to overly complicate the assert at #L3432, the way its written it expects the \u0027Duplicate zone.\u0027 for the 1st time through.","commit_id":"bbef41ce8a5506c91590bd8b8250755cee98ca4d"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"d4426ebe58909727610d1f3789d73ef0d082c3e7","unresolved":true,"context_lines":[{"line_number":3412,"context_line":"    def test_create_zone_import_duplicate_threading(self):"},{"line_number":3413,"context_line":"        context \u003d self.get_context(project_id\u003dutils.generate_uuid())"},{"line_number":3414,"context_line":"        request_body \u003d self.get_zonefile_fixture()"},{"line_number":3415,"context_line":"        zone_import \u003d self.central_service.create_zone_import(context,"},{"line_number":3416,"context_line":"                                                              request_body)"},{"line_number":3417,"context_line":"        self.wait_for_import(zone_import.id)"},{"line_number":3418,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"8bff4f2f_81fedd8a","line":3415,"in_reply_to":"ebaaa666_0d4e4be9","updated":"2022-04-20 17:25:10.000000000","message":"As long as it actually triggers the bug with this if you remove the code added to service.py (on master).","commit_id":"bbef41ce8a5506c91590bd8b8250755cee98ca4d"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"53f2d71acba9e3e1a773051a44859bdde5bf40d1","unresolved":true,"context_lines":[{"line_number":3416,"context_line":"                                                              request_body)"},{"line_number":3417,"context_line":"        self.wait_for_import(zone_import.id)"},{"line_number":3418,"context_line":""},{"line_number":3419,"context_line":"        def update_floatingip():"},{"line_number":3420,"context_line":"            context \u003d self.get_context(project_id\u003dutils.generate_uuid())"},{"line_number":3421,"context_line":"            request_body \u003d self.get_zonefile_fixture()"},{"line_number":3422,"context_line":"            zone_import \u003d self.central_service.create_zone_import(context,"}],"source_content_type":"text/x-python","patch_set":5,"id":"caf65977_17876809","line":3419,"updated":"2022-04-18 21:35:38.000000000","message":"Lets rename this to something like create_zone_import","commit_id":"bbef41ce8a5506c91590bd8b8250755cee98ca4d"},{"author":{"_account_id":5572,"name":"Don Kehn","display_name":"DEKehn","email":"dekehn@gmail.com","username":"dekehn"},"change_message_id":"3976e328ed2301ae445f1322713066f11960b89a","unresolved":false,"context_lines":[{"line_number":3416,"context_line":"                                                              request_body)"},{"line_number":3417,"context_line":"        self.wait_for_import(zone_import.id)"},{"line_number":3418,"context_line":""},{"line_number":3419,"context_line":"        def update_floatingip():"},{"line_number":3420,"context_line":"            context \u003d self.get_context(project_id\u003dutils.generate_uuid())"},{"line_number":3421,"context_line":"            request_body \u003d self.get_zonefile_fixture()"},{"line_number":3422,"context_line":"            zone_import \u003d self.central_service.create_zone_import(context,"}],"source_content_type":"text/x-python","patch_set":5,"id":"96d79725_0a78658b","line":3419,"in_reply_to":"caf65977_17876809","updated":"2022-04-20 16:02:49.000000000","message":"Will do in the next patch","commit_id":"bbef41ce8a5506c91590bd8b8250755cee98ca4d"}]}
