)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"5eada912719fc12bd63d359ac882ef2ba25aac89","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"introduce global greenpool"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change add a global greenpool which is used to mange"},{"line_number":10,"context_line":"the greenthreads created via nova.utils.spawn(_n)."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"A test fixture is also added to use an isolated greenpool"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"b5e2df40_10460584","line":9,"range":{"start_line":9,"start_character":52,"end_line":9,"end_character":57},"updated":"2023-08-23 17:32:09.000000000","message":"manage","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e3f006bf9c06b83b0828848605f7e075163ec3b0","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"introduce global greenpool"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change add a global greenpool which is used to mange"},{"line_number":10,"context_line":"the greenthreads created via nova.utils.spawn(_n)."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"A test fixture is also added to use an isolated greenpool"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"c21ac0de_ac77ebdf","line":9,"range":{"start_line":9,"start_character":52,"end_line":9,"end_character":57},"in_reply_to":"b5e2df40_10460584","updated":"2023-08-25 02:02:42.000000000","message":"Done","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"5eada912719fc12bd63d359ac882ef2ba25aac89","unresolved":true,"context_lines":[{"line_number":15,"context_line":"This is enabled by unit test by default and is configurable"},{"line_number":16,"context_line":"for functional tests."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This change removes all greenthread leaks form the unit"},{"line_number":19,"context_line":"and functional tests that were detected. 7 functional"},{"line_number":20,"context_line":"tests still leak greenlets but they have no obvious"},{"line_number":21,"context_line":"cause. as such greenlet leaks are not treated as errors"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"887c5dc1_79c45c90","line":18,"range":{"start_line":18,"start_character":42,"end_line":18,"end_character":46},"updated":"2023-08-23 17:32:09.000000000","message":"from","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e3f006bf9c06b83b0828848605f7e075163ec3b0","unresolved":false,"context_lines":[{"line_number":15,"context_line":"This is enabled by unit test by default and is configurable"},{"line_number":16,"context_line":"for functional tests."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This change removes all greenthread leaks form the unit"},{"line_number":19,"context_line":"and functional tests that were detected. 7 functional"},{"line_number":20,"context_line":"tests still leak greenlets but they have no obvious"},{"line_number":21,"context_line":"cause. as such greenlet leaks are not treated as errors"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"c0b2eb09_71380781","line":18,"range":{"start_line":18,"start_character":42,"end_line":18,"end_character":46},"in_reply_to":"887c5dc1_79c45c90","updated":"2023-08-25 02:02:42.000000000","message":"Done","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"5eada912719fc12bd63d359ac882ef2ba25aac89","unresolved":true,"context_lines":[{"line_number":19,"context_line":"and functional tests that were detected. 7 functional"},{"line_number":20,"context_line":"tests still leak greenlets but they have no obvious"},{"line_number":21,"context_line":"cause. as such greenlet leaks are not treated as errors"},{"line_number":22,"context_line":"for funtional tests by default. Greenthread leaks"},{"line_number":23,"context_line":"are alwasys treaed as errors."},{"line_number":24,"context_line":"set NOVA_RAISE_ON_GREENLET_LEAK\u003d1|true|yes when invoking"},{"line_number":25,"context_line":"tox to make greenlet leaks an error for functional tests."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"b99fd433_048b044d","line":22,"range":{"start_line":22,"start_character":4,"end_line":22,"end_character":13},"updated":"2023-08-23 17:32:09.000000000","message":"functional","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e3f006bf9c06b83b0828848605f7e075163ec3b0","unresolved":false,"context_lines":[{"line_number":19,"context_line":"and functional tests that were detected. 7 functional"},{"line_number":20,"context_line":"tests still leak greenlets but they have no obvious"},{"line_number":21,"context_line":"cause. as such greenlet leaks are not treated as errors"},{"line_number":22,"context_line":"for funtional tests by default. Greenthread leaks"},{"line_number":23,"context_line":"are alwasys treaed as errors."},{"line_number":24,"context_line":"set NOVA_RAISE_ON_GREENLET_LEAK\u003d1|true|yes when invoking"},{"line_number":25,"context_line":"tox to make greenlet leaks an error for functional tests."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"4f08d49a_bc1fd33e","line":22,"range":{"start_line":22,"start_character":4,"end_line":22,"end_character":13},"in_reply_to":"b99fd433_048b044d","updated":"2023-08-25 02:02:42.000000000","message":"Done","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"5eada912719fc12bd63d359ac882ef2ba25aac89","unresolved":true,"context_lines":[{"line_number":20,"context_line":"tests still leak greenlets but they have no obvious"},{"line_number":21,"context_line":"cause. as such greenlet leaks are not treated as errors"},{"line_number":22,"context_line":"for funtional tests by default. Greenthread leaks"},{"line_number":23,"context_line":"are alwasys treaed as errors."},{"line_number":24,"context_line":"set NOVA_RAISE_ON_GREENLET_LEAK\u003d1|true|yes when invoking"},{"line_number":25,"context_line":"tox to make greenlet leaks an error for functional tests."},{"line_number":26,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"ba9e5260_73f1b1cd","line":23,"range":{"start_line":23,"start_character":4,"end_line":23,"end_character":11},"updated":"2023-08-23 17:32:09.000000000","message":"always","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"5eada912719fc12bd63d359ac882ef2ba25aac89","unresolved":true,"context_lines":[{"line_number":20,"context_line":"tests still leak greenlets but they have no obvious"},{"line_number":21,"context_line":"cause. as such greenlet leaks are not treated as errors"},{"line_number":22,"context_line":"for funtional tests by default. Greenthread leaks"},{"line_number":23,"context_line":"are alwasys treaed as errors."},{"line_number":24,"context_line":"set NOVA_RAISE_ON_GREENLET_LEAK\u003d1|true|yes when invoking"},{"line_number":25,"context_line":"tox to make greenlet leaks an error for functional tests."},{"line_number":26,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"808743b4_5c95df9e","line":23,"range":{"start_line":23,"start_character":12,"end_line":23,"end_character":18},"updated":"2023-08-23 17:32:09.000000000","message":"treated","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e3f006bf9c06b83b0828848605f7e075163ec3b0","unresolved":false,"context_lines":[{"line_number":20,"context_line":"tests still leak greenlets but they have no obvious"},{"line_number":21,"context_line":"cause. as such greenlet leaks are not treated as errors"},{"line_number":22,"context_line":"for funtional tests by default. Greenthread leaks"},{"line_number":23,"context_line":"are alwasys treaed as errors."},{"line_number":24,"context_line":"set NOVA_RAISE_ON_GREENLET_LEAK\u003d1|true|yes when invoking"},{"line_number":25,"context_line":"tox to make greenlet leaks an error for functional tests."},{"line_number":26,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"5c1f322c_0c0c055d","line":23,"range":{"start_line":23,"start_character":12,"end_line":23,"end_character":18},"in_reply_to":"808743b4_5c95df9e","updated":"2023-08-25 02:02:42.000000000","message":"Done","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e3f006bf9c06b83b0828848605f7e075163ec3b0","unresolved":false,"context_lines":[{"line_number":20,"context_line":"tests still leak greenlets but they have no obvious"},{"line_number":21,"context_line":"cause. as such greenlet leaks are not treated as errors"},{"line_number":22,"context_line":"for funtional tests by default. Greenthread leaks"},{"line_number":23,"context_line":"are alwasys treaed as errors."},{"line_number":24,"context_line":"set NOVA_RAISE_ON_GREENLET_LEAK\u003d1|true|yes when invoking"},{"line_number":25,"context_line":"tox to make greenlet leaks an error for functional tests."},{"line_number":26,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"99914aa7_693dc0fb","line":23,"range":{"start_line":23,"start_character":4,"end_line":23,"end_character":11},"in_reply_to":"ba9e5260_73f1b1cd","updated":"2023-08-25 02:02:42.000000000","message":"Done","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"5eada912719fc12bd63d359ac882ef2ba25aac89","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"0131bc63_78105103","updated":"2023-08-23 17:32:09.000000000","message":"I like this idea, it would help a lot to be able to detect these. Inline comments mostly finding typos along with a couple of questions.","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6167c375dff31c4832d68dd76cbab35ea22359e3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"3878ebf1_823c7fdb","updated":"2023-08-23 17:44:32.000000000","message":"thanks melaine ill fix the typos let me know what you want me to do with the min value.","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"563ea28a5365cdd070359cbde6c8f16c9ceac0d2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"aa30bf1d_5be87215","updated":"2023-08-25 01:23:02.000000000","message":"Looks OK to me","commit_id":"d71d2dc219b359c00f0fe596d6ffd81e343ecc43"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"901c2040eae4a4e66d2132884cc04bce516ad607","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"5ee1b9cb_13b38f19","updated":"2023-08-25 14:19:05.000000000","message":"Looks good. Thanks Sean.","commit_id":"d71d2dc219b359c00f0fe596d6ffd81e343ecc43"}],"nova/conf/base.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"5eada912719fc12bd63d359ac882ef2ba25aac89","unresolved":true,"context_lines":[{"line_number":63,"context_line":"    cfg.IntOpt("},{"line_number":64,"context_line":"        \u0027default_green_pool_size\u0027,"},{"line_number":65,"context_line":"        default\u003d1000,"},{"line_number":66,"context_line":"        min\u003d1000,"},{"line_number":67,"context_line":"        help\u003d\u0027\u0027\u0027"},{"line_number":68,"context_line":"The total number of coroutines that can be run via nova\u0027s default"},{"line_number":69,"context_line":"greenthread pool concurrently, defaults to 1000, min value is 1000."}],"source_content_type":"text/x-python","patch_set":8,"id":"acc21ca5_a67d5f52","line":66,"updated":"2023-08-23 17:32:09.000000000","message":"Curious why to make the minimum 1000? Like if someone needed to configure this, there\u0027s no way they would ever want to set it lower?","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6167c375dff31c4832d68dd76cbab35ea22359e3","unresolved":true,"context_lines":[{"line_number":63,"context_line":"    cfg.IntOpt("},{"line_number":64,"context_line":"        \u0027default_green_pool_size\u0027,"},{"line_number":65,"context_line":"        default\u003d1000,"},{"line_number":66,"context_line":"        min\u003d1000,"},{"line_number":67,"context_line":"        help\u003d\u0027\u0027\u0027"},{"line_number":68,"context_line":"The total number of coroutines that can be run via nova\u0027s default"},{"line_number":69,"context_line":"greenthread pool concurrently, defaults to 1000, min value is 1000."}],"source_content_type":"text/x-python","patch_set":8,"id":"d27a53db_765e34be","line":66,"in_reply_to":"acc21ca5_a67d5f52","updated":"2023-08-23 17:44:32.000000000","message":"i guess i can just set it to somehing like 100?\nim not sure where the lower bound really is so i set the min ot the eventlet default.\n\nwoudl it be better to just not set a min value or set it to something smaller but not too small. i fell like 10 is linkly not a good idea but less then 1000 is proably ok.","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"b84d607e1c33199d701caeec57c92aee159b5e4a","unresolved":true,"context_lines":[{"line_number":63,"context_line":"    cfg.IntOpt("},{"line_number":64,"context_line":"        \u0027default_green_pool_size\u0027,"},{"line_number":65,"context_line":"        default\u003d1000,"},{"line_number":66,"context_line":"        min\u003d1000,"},{"line_number":67,"context_line":"        help\u003d\u0027\u0027\u0027"},{"line_number":68,"context_line":"The total number of coroutines that can be run via nova\u0027s default"},{"line_number":69,"context_line":"greenthread pool concurrently, defaults to 1000, min value is 1000."}],"source_content_type":"text/x-python","patch_set":8,"id":"8ff1a275_22c11989","line":66,"in_reply_to":"d27a53db_765e34be","updated":"2023-08-23 18:24:57.000000000","message":"Ah, OK, didn\u0027t realize it\u0027s the eventlet default.\n\nYeah, I dunno ... I\u0027m not really sure either. It was just unusual for me to see a min value of 1000. Looking at other greenpool conf we have, max_concurrent_live_migrations [1] defaults to 1 and allows setting it to 0 (unlimited), sync_power_state_pool_size [2] defaults to 1000 and doesn\u0027t set a minimum.\n\nOn the live migration the config option help says \"Maximum number of live migrations to run concurrently. This limit is enforced\nto avoid outbound live migrations overwhelming the host/network and causing\nfailures. It is not recommended that you change this unless you are very sure\nthat doing so is safe and stable in your environment.\" I only mention that in case it rings a bell whether any similar concern about overwhelming other resources could apply to this particular pool.\n\nI\u0027m fine with leaving this as-is from the perspective of, it wasn\u0027t even configurable previously.\n\n[1] https://github.com/openstack/nova/blob/17b46ba/nova/conf/compute.py#L687\n[2] https://github.com/openstack/nova/blob/17b46ba/nova/conf/compute.py#L735","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"901c2040eae4a4e66d2132884cc04bce516ad607","unresolved":true,"context_lines":[{"line_number":66,"context_line":"        min\u003d100,"},{"line_number":67,"context_line":"        help\u003d\u0027\u0027\u0027"},{"line_number":68,"context_line":"The total number of coroutines that can be run via nova\u0027s default"},{"line_number":69,"context_line":"greenthread pool concurrently, defaults to 1000, min value is 100."},{"line_number":70,"context_line":"\u0027\u0027\u0027),"},{"line_number":71,"context_line":"]"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"06a4ebd2_804b13a1","line":69,"updated":"2023-08-25 14:19:05.000000000","message":"Thanks for this. Do we have a way to see how big is the pool at the end of a tempest run? That would give us a hint how fast we fill it.","commit_id":"d71d2dc219b359c00f0fe596d6ffd81e343ecc43"}],"nova/tests/fixtures/nova.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"b2ce41f4947acd8e15cc15058b219391e7c26b1a","unresolved":true,"context_lines":[{"line_number":1145,"context_line":"    def __init__(self, test):"},{"line_number":1146,"context_line":"        self.test_case_id \u003d test"},{"line_number":1147,"context_line":""},{"line_number":1148,"context_line":"    def _setUp(self):"},{"line_number":1149,"context_line":"        super().setUp()"},{"line_number":1150,"context_line":"        self.greenpool \u003d eventlet.greenpool.GreenPool()"},{"line_number":1151,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"f7e9b6e8_440e4c1a","line":1148,"range":{"start_line":1148,"start_character":8,"end_line":1148,"end_character":14},"updated":"2023-02-08 07:31:09.000000000","message":"setUp","commit_id":"0c94a11cb29c96d4a5baa875bcdb0702512206bb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"88d3186aa14e58f418dc3e694bc07be3ce761263","unresolved":false,"context_lines":[{"line_number":1145,"context_line":"    def __init__(self, test):"},{"line_number":1146,"context_line":"        self.test_case_id \u003d test"},{"line_number":1147,"context_line":""},{"line_number":1148,"context_line":"    def _setUp(self):"},{"line_number":1149,"context_line":"        super().setUp()"},{"line_number":1150,"context_line":"        self.greenpool \u003d eventlet.greenpool.GreenPool()"},{"line_number":1151,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"829a6ec7_e1a32fb6","line":1148,"range":{"start_line":1148,"start_character":8,"end_line":1148,"end_character":14},"in_reply_to":"a9a1a54b_67c59471","updated":"2023-02-08 07:52:31.000000000","message":"Done","commit_id":"0c94a11cb29c96d4a5baa875bcdb0702512206bb"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"3b06fae012c86b0958b105838d1937c4f1c795e9","unresolved":false,"context_lines":[{"line_number":1145,"context_line":"    def __init__(self, test):"},{"line_number":1146,"context_line":"        self.test_case_id \u003d test"},{"line_number":1147,"context_line":""},{"line_number":1148,"context_line":"    def _setUp(self):"},{"line_number":1149,"context_line":"        super().setUp()"},{"line_number":1150,"context_line":"        self.greenpool \u003d eventlet.greenpool.GreenPool()"},{"line_number":1151,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"262944cb_43e69f0c","line":1148,"range":{"start_line":1148,"start_character":8,"end_line":1148,"end_character":14},"in_reply_to":"a9a1a54b_67c59471","updated":"2023-02-08 07:51:20.000000000","message":"Good to know, I had no idea 😬","commit_id":"0c94a11cb29c96d4a5baa875bcdb0702512206bb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ab30ac6bf74dc20b3533cc241d4a44c8c8c6f96a","unresolved":true,"context_lines":[{"line_number":1145,"context_line":"    def __init__(self, test):"},{"line_number":1146,"context_line":"        self.test_case_id \u003d test"},{"line_number":1147,"context_line":""},{"line_number":1148,"context_line":"    def _setUp(self):"},{"line_number":1149,"context_line":"        super().setUp()"},{"line_number":1150,"context_line":"        self.greenpool \u003d eventlet.greenpool.GreenPool()"},{"line_number":1151,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"a9a1a54b_67c59471","line":1148,"range":{"start_line":1148,"start_character":8,"end_line":1148,"end_character":14},"in_reply_to":"f7e9b6e8_440e4c1a","updated":"2023-02-08 07:33:18.000000000","message":"no thats deprecated https://github.com/testing-cabal/fixtures/blob/master/fixtures/fixture.py#L174-L178\n\nbut ill fix the ohter nits now.","commit_id":"0c94a11cb29c96d4a5baa875bcdb0702512206bb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7dc5cb3fd355850d8e15d7f01210a42254e82fcb","unresolved":true,"context_lines":[{"line_number":1146,"context_line":"        self.test_case_id \u003d test"},{"line_number":1147,"context_line":""},{"line_number":1148,"context_line":"    def _setUp(self):"},{"line_number":1149,"context_line":"        super().setUp()"},{"line_number":1150,"context_line":"        self.greenpool \u003d eventlet.greenpool.GreenPool()"},{"line_number":1151,"context_line":""},{"line_number":1152,"context_line":"        def _get_default_green_pool():"}],"source_content_type":"text/x-python","patch_set":1,"id":"82593f40_c9d5aa71","line":1149,"range":{"start_line":1149,"start_character":7,"end_line":1149,"end_character":23},"updated":"2023-02-08 07:31:22.000000000","message":"forgot to remove this when i renamed this to _setUp since we are not ment to override setUp anymore.","commit_id":"0c94a11cb29c96d4a5baa875bcdb0702512206bb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8e3a867c4ee663660e6ef19a62c1224f5b645312","unresolved":false,"context_lines":[{"line_number":1146,"context_line":"        self.test_case_id \u003d test"},{"line_number":1147,"context_line":""},{"line_number":1148,"context_line":"    def _setUp(self):"},{"line_number":1149,"context_line":"        super().setUp()"},{"line_number":1150,"context_line":"        self.greenpool \u003d eventlet.greenpool.GreenPool()"},{"line_number":1151,"context_line":""},{"line_number":1152,"context_line":"        def _get_default_green_pool():"}],"source_content_type":"text/x-python","patch_set":1,"id":"7fba488a_a54c7d31","line":1149,"range":{"start_line":1149,"start_character":7,"end_line":1149,"end_character":23},"in_reply_to":"82593f40_c9d5aa71","updated":"2023-02-08 07:39:37.000000000","message":"Done","commit_id":"0c94a11cb29c96d4a5baa875bcdb0702512206bb"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"b2ce41f4947acd8e15cc15058b219391e7c26b1a","unresolved":true,"context_lines":[{"line_number":1152,"context_line":"        def _get_default_green_pool():"},{"line_number":1153,"context_line":"            return self.greenpool"},{"line_number":1154,"context_line":"        # NOTE(sean-k-mooney): greenpools use eventlet.spawn and"},{"line_number":1155,"context_line":"        # eventlet.spawn_n so we cant stub out all calls to those functions."},{"line_number":1156,"context_line":"        # Instead since nova only creates greentreads directly via nova.utils"},{"line_number":1157,"context_line":"        # we stub out the default green pool. This will not capture"},{"line_number":1158,"context_line":"        # Greanthreads created via the standard lib threading module."}],"source_content_type":"text/x-python","patch_set":1,"id":"7838b604_21bf675f","line":1155,"range":{"start_line":1155,"start_character":33,"end_line":1155,"end_character":37},"updated":"2023-02-08 07:31:09.000000000","message":"can\u0027t","commit_id":"0c94a11cb29c96d4a5baa875bcdb0702512206bb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8e3a867c4ee663660e6ef19a62c1224f5b645312","unresolved":false,"context_lines":[{"line_number":1152,"context_line":"        def _get_default_green_pool():"},{"line_number":1153,"context_line":"            return self.greenpool"},{"line_number":1154,"context_line":"        # NOTE(sean-k-mooney): greenpools use eventlet.spawn and"},{"line_number":1155,"context_line":"        # eventlet.spawn_n so we cant stub out all calls to those functions."},{"line_number":1156,"context_line":"        # Instead since nova only creates greentreads directly via nova.utils"},{"line_number":1157,"context_line":"        # we stub out the default green pool. This will not capture"},{"line_number":1158,"context_line":"        # Greanthreads created via the standard lib threading module."}],"source_content_type":"text/x-python","patch_set":1,"id":"fddd9f2a_0e75d3eb","line":1155,"range":{"start_line":1155,"start_character":33,"end_line":1155,"end_character":37},"in_reply_to":"7838b604_21bf675f","updated":"2023-02-08 07:39:37.000000000","message":"Done","commit_id":"0c94a11cb29c96d4a5baa875bcdb0702512206bb"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"b2ce41f4947acd8e15cc15058b219391e7c26b1a","unresolved":true,"context_lines":[{"line_number":1153,"context_line":"            return self.greenpool"},{"line_number":1154,"context_line":"        # NOTE(sean-k-mooney): greenpools use eventlet.spawn and"},{"line_number":1155,"context_line":"        # eventlet.spawn_n so we cant stub out all calls to those functions."},{"line_number":1156,"context_line":"        # Instead since nova only creates greentreads directly via nova.utils"},{"line_number":1157,"context_line":"        # we stub out the default green pool. This will not capture"},{"line_number":1158,"context_line":"        # Greanthreads created via the standard lib threading module."},{"line_number":1159,"context_line":"        self.useFixture(fixtures.MonkeyPatch("}],"source_content_type":"text/x-python","patch_set":1,"id":"76f024a4_c6e47c7b","line":1156,"range":{"start_line":1156,"start_character":42,"end_line":1156,"end_character":53},"updated":"2023-02-08 07:31:09.000000000","message":"greenthreads","commit_id":"0c94a11cb29c96d4a5baa875bcdb0702512206bb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8e3a867c4ee663660e6ef19a62c1224f5b645312","unresolved":false,"context_lines":[{"line_number":1153,"context_line":"            return self.greenpool"},{"line_number":1154,"context_line":"        # NOTE(sean-k-mooney): greenpools use eventlet.spawn and"},{"line_number":1155,"context_line":"        # eventlet.spawn_n so we cant stub out all calls to those functions."},{"line_number":1156,"context_line":"        # Instead since nova only creates greentreads directly via nova.utils"},{"line_number":1157,"context_line":"        # we stub out the default green pool. This will not capture"},{"line_number":1158,"context_line":"        # Greanthreads created via the standard lib threading module."},{"line_number":1159,"context_line":"        self.useFixture(fixtures.MonkeyPatch("}],"source_content_type":"text/x-python","patch_set":1,"id":"a6e16fa7_1743c6cb","line":1156,"range":{"start_line":1156,"start_character":42,"end_line":1156,"end_character":53},"in_reply_to":"76f024a4_c6e47c7b","updated":"2023-02-08 07:39:37.000000000","message":"Done","commit_id":"0c94a11cb29c96d4a5baa875bcdb0702512206bb"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"b2ce41f4947acd8e15cc15058b219391e7c26b1a","unresolved":true,"context_lines":[{"line_number":1155,"context_line":"        # eventlet.spawn_n so we cant stub out all calls to those functions."},{"line_number":1156,"context_line":"        # Instead since nova only creates greentreads directly via nova.utils"},{"line_number":1157,"context_line":"        # we stub out the default green pool. This will not capture"},{"line_number":1158,"context_line":"        # Greanthreads created via the standard lib threading module."},{"line_number":1159,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":1160,"context_line":"            \u0027nova.utils._get_default_green_pool\u0027, _get_default_green_pool))"},{"line_number":1161,"context_line":"        self.addCleanup(self.do_cleanup)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1d5f82f1_8ea941d0","line":1158,"range":{"start_line":1158,"start_character":10,"end_line":1158,"end_character":22},"updated":"2023-02-08 07:31:09.000000000","message":"Greenthreads","commit_id":"0c94a11cb29c96d4a5baa875bcdb0702512206bb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8e3a867c4ee663660e6ef19a62c1224f5b645312","unresolved":false,"context_lines":[{"line_number":1155,"context_line":"        # eventlet.spawn_n so we cant stub out all calls to those functions."},{"line_number":1156,"context_line":"        # Instead since nova only creates greentreads directly via nova.utils"},{"line_number":1157,"context_line":"        # we stub out the default green pool. This will not capture"},{"line_number":1158,"context_line":"        # Greanthreads created via the standard lib threading module."},{"line_number":1159,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":1160,"context_line":"            \u0027nova.utils._get_default_green_pool\u0027, _get_default_green_pool))"},{"line_number":1161,"context_line":"        self.addCleanup(self.do_cleanup)"}],"source_content_type":"text/x-python","patch_set":1,"id":"e68e1a38_2e2d98d1","line":1158,"range":{"start_line":1158,"start_character":10,"end_line":1158,"end_character":22},"in_reply_to":"1d5f82f1_8ea941d0","updated":"2023-02-08 07:39:37.000000000","message":"Done","commit_id":"0c94a11cb29c96d4a5baa875bcdb0702512206bb"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"b2ce41f4947acd8e15cc15058b219391e7c26b1a","unresolved":true,"context_lines":[{"line_number":1164,"context_line":"        running \u003d self.greenpool.running()"},{"line_number":1165,"context_line":"        if running:"},{"line_number":1166,"context_line":"            self.addDetail("},{"line_number":1167,"context_line":"                \u0027IsolatedGreenPoolFixture\u0027,"},{"line_number":1168,"context_line":"                f\u0027detected leaked greentreads in {self.test_case_id}\u0027"},{"line_number":1169,"context_line":"                f\u0027waiting for {running} greenthreads to complete.\u0027"},{"line_number":1170,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":1,"id":"337d3cf1_19c5da6b","line":1167,"updated":"2023-02-08 07:31:09.000000000","message":"stephenfin would make you add f-string here to match alignment 🙂","commit_id":"0c94a11cb29c96d4a5baa875bcdb0702512206bb"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"3b06fae012c86b0958b105838d1937c4f1c795e9","unresolved":false,"context_lines":[{"line_number":1164,"context_line":"        running \u003d self.greenpool.running()"},{"line_number":1165,"context_line":"        if running:"},{"line_number":1166,"context_line":"            self.addDetail("},{"line_number":1167,"context_line":"                \u0027IsolatedGreenPoolFixture\u0027,"},{"line_number":1168,"context_line":"                f\u0027detected leaked greentreads in {self.test_case_id}\u0027"},{"line_number":1169,"context_line":"                f\u0027waiting for {running} greenthreads to complete.\u0027"},{"line_number":1170,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ac2f3a8_7e72b29b","line":1167,"in_reply_to":"021abcff_c8bca3be","updated":"2023-02-08 07:51:20.000000000","message":"Huh, interesting. I added one once and didn\u0027t run into an issue but I may have been on an env where I didn\u0027t have pre-commit set up.","commit_id":"0c94a11cb29c96d4a5baa875bcdb0702512206bb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8e3a867c4ee663660e6ef19a62c1224f5b645312","unresolved":true,"context_lines":[{"line_number":1164,"context_line":"        running \u003d self.greenpool.running()"},{"line_number":1165,"context_line":"        if running:"},{"line_number":1166,"context_line":"            self.addDetail("},{"line_number":1167,"context_line":"                \u0027IsolatedGreenPoolFixture\u0027,"},{"line_number":1168,"context_line":"                f\u0027detected leaked greentreads in {self.test_case_id}\u0027"},{"line_number":1169,"context_line":"                f\u0027waiting for {running} greenthreads to complete.\u0027"},{"line_number":1170,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":1,"id":"021abcff_c8bca3be","line":1167,"in_reply_to":"337d3cf1_19c5da6b","updated":"2023-02-08 07:39:37.000000000","message":"that gives me nova/tests/fixtures/nova.py:1166:17: F541 f-string is missing placeholders\n\nwith precommit.\n\ni know he said somethign about hacking allowing this but that sames to not work with precommit.\noh actully i know why stephen is correct that this woudl be allow when doing string concatination as i am doing on the two lines below.\n\nbut its still a error make strings that are not concatonated an f string","commit_id":"0c94a11cb29c96d4a5baa875bcdb0702512206bb"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"b2ce41f4947acd8e15cc15058b219391e7c26b1a","unresolved":true,"context_lines":[{"line_number":1165,"context_line":"        if running:"},{"line_number":1166,"context_line":"            self.addDetail("},{"line_number":1167,"context_line":"                \u0027IsolatedGreenPoolFixture\u0027,"},{"line_number":1168,"context_line":"                f\u0027detected leaked greentreads in {self.test_case_id}\u0027"},{"line_number":1169,"context_line":"                f\u0027waiting for {running} greenthreads to complete.\u0027"},{"line_number":1170,"context_line":"            )"},{"line_number":1171,"context_line":"            # wait for greenthread to complete before raising to prevent"}],"source_content_type":"text/x-python","patch_set":1,"id":"755e257c_2eff8fbf","line":1168,"range":{"start_line":1168,"start_character":34,"end_line":1168,"end_character":45},"updated":"2023-02-08 07:31:09.000000000","message":"greenthreads","commit_id":"0c94a11cb29c96d4a5baa875bcdb0702512206bb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8e3a867c4ee663660e6ef19a62c1224f5b645312","unresolved":false,"context_lines":[{"line_number":1165,"context_line":"        if running:"},{"line_number":1166,"context_line":"            self.addDetail("},{"line_number":1167,"context_line":"                \u0027IsolatedGreenPoolFixture\u0027,"},{"line_number":1168,"context_line":"                f\u0027detected leaked greentreads in {self.test_case_id}\u0027"},{"line_number":1169,"context_line":"                f\u0027waiting for {running} greenthreads to complete.\u0027"},{"line_number":1170,"context_line":"            )"},{"line_number":1171,"context_line":"            # wait for greenthread to complete before raising to prevent"}],"source_content_type":"text/x-python","patch_set":1,"id":"0f28312b_6f685c4d","line":1168,"range":{"start_line":1168,"start_character":34,"end_line":1168,"end_character":45},"in_reply_to":"755e257c_2eff8fbf","updated":"2023-02-08 07:39:37.000000000","message":"Done","commit_id":"0c94a11cb29c96d4a5baa875bcdb0702512206bb"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"b2ce41f4947acd8e15cc15058b219391e7c26b1a","unresolved":true,"context_lines":[{"line_number":1170,"context_line":"            )"},{"line_number":1171,"context_line":"            # wait for greenthread to complete before raising to prevent"},{"line_number":1172,"context_line":"            # them from interfering with other tests."},{"line_number":1173,"context_line":"            self.greenpool.waitall()"},{"line_number":1174,"context_line":"            raise RuntimeError("},{"line_number":1175,"context_line":"                f\u0027detected leaked greentreads in {self.test_case_id}\u0027)"},{"line_number":1176,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"cb5dfeb2_70f62c79","line":1173,"updated":"2023-02-08 07:31:09.000000000","message":"Any reason not to kill/cancel them instead of waiting?","commit_id":"0c94a11cb29c96d4a5baa875bcdb0702512206bb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"86175be259b31c20f436c54f20709f018ca28640","unresolved":true,"context_lines":[{"line_number":1170,"context_line":"            )"},{"line_number":1171,"context_line":"            # wait for greenthread to complete before raising to prevent"},{"line_number":1172,"context_line":"            # them from interfering with other tests."},{"line_number":1173,"context_line":"            self.greenpool.waitall()"},{"line_number":1174,"context_line":"            raise RuntimeError("},{"line_number":1175,"context_line":"                f\u0027detected leaked greentreads in {self.test_case_id}\u0027)"},{"line_number":1176,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"b73b10d5_0e219053","line":1173,"in_reply_to":"4dcb206a_918a6364","updated":"2023-02-08 07:44:33.000000000","message":"ok so there is no public funciton for it but there is \n\nhttps://github.com/eventlet/eventlet/blob/master/eventlet/greenpool.py#L27\n\nso ok we could loop over self.greenpool.coroutines_running\n\nand call kill on them\nhttp://eventlet.net/doc/modules/greenthread.html#eventlet.greenthread.GreenThread.kill\n\ni can try that it would be a quicker way to clean up","commit_id":"0c94a11cb29c96d4a5baa875bcdb0702512206bb"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"3b06fae012c86b0958b105838d1937c4f1c795e9","unresolved":true,"context_lines":[{"line_number":1170,"context_line":"            )"},{"line_number":1171,"context_line":"            # wait for greenthread to complete before raising to prevent"},{"line_number":1172,"context_line":"            # them from interfering with other tests."},{"line_number":1173,"context_line":"            self.greenpool.waitall()"},{"line_number":1174,"context_line":"            raise RuntimeError("},{"line_number":1175,"context_line":"                f\u0027detected leaked greentreads in {self.test_case_id}\u0027)"},{"line_number":1176,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"8ad7aa88_88e2b35d","line":1173,"in_reply_to":"b73b10d5_0e219053","updated":"2023-02-08 07:51:20.000000000","message":"Ah OK, I (wrongly) assumed there would be a killall-like method on greenpool.\n\nGood find on that set(), would be cool if it works.","commit_id":"0c94a11cb29c96d4a5baa875bcdb0702512206bb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"88d3186aa14e58f418dc3e694bc07be3ce761263","unresolved":false,"context_lines":[{"line_number":1170,"context_line":"            )"},{"line_number":1171,"context_line":"            # wait for greenthread to complete before raising to prevent"},{"line_number":1172,"context_line":"            # them from interfering with other tests."},{"line_number":1173,"context_line":"            self.greenpool.waitall()"},{"line_number":1174,"context_line":"            raise RuntimeError("},{"line_number":1175,"context_line":"                f\u0027detected leaked greentreads in {self.test_case_id}\u0027)"},{"line_number":1176,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"d17d00cc_3b23a17b","line":1173,"in_reply_to":"b73b10d5_0e219053","updated":"2023-02-08 07:52:31.000000000","message":"Done","commit_id":"0c94a11cb29c96d4a5baa875bcdb0702512206bb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ab30ac6bf74dc20b3533cc241d4a44c8c8c6f96a","unresolved":true,"context_lines":[{"line_number":1170,"context_line":"            )"},{"line_number":1171,"context_line":"            # wait for greenthread to complete before raising to prevent"},{"line_number":1172,"context_line":"            # them from interfering with other tests."},{"line_number":1173,"context_line":"            self.greenpool.waitall()"},{"line_number":1174,"context_line":"            raise RuntimeError("},{"line_number":1175,"context_line":"                f\u0027detected leaked greentreads in {self.test_case_id}\u0027)"},{"line_number":1176,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"4dcb206a_918a6364","line":1173,"in_reply_to":"cb5dfeb2_70f62c79","updated":"2023-02-08 07:33:18.000000000","message":"i dont think we can get the set to loop over them.\nif we can then we can do that","commit_id":"0c94a11cb29c96d4a5baa875bcdb0702512206bb"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"b2ce41f4947acd8e15cc15058b219391e7c26b1a","unresolved":true,"context_lines":[{"line_number":1172,"context_line":"            # them from interfering with other tests."},{"line_number":1173,"context_line":"            self.greenpool.waitall()"},{"line_number":1174,"context_line":"            raise RuntimeError("},{"line_number":1175,"context_line":"                f\u0027detected leaked greentreads in {self.test_case_id}\u0027)"},{"line_number":1176,"context_line":""},{"line_number":1177,"context_line":""},{"line_number":1178,"context_line":"class _FakeGreenThread(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"2b90033c_98668d24","line":1175,"range":{"start_line":1175,"start_character":34,"end_line":1175,"end_character":45},"updated":"2023-02-08 07:31:09.000000000","message":"greenthreads","commit_id":"0c94a11cb29c96d4a5baa875bcdb0702512206bb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8e3a867c4ee663660e6ef19a62c1224f5b645312","unresolved":false,"context_lines":[{"line_number":1172,"context_line":"            # them from interfering with other tests."},{"line_number":1173,"context_line":"            self.greenpool.waitall()"},{"line_number":1174,"context_line":"            raise RuntimeError("},{"line_number":1175,"context_line":"                f\u0027detected leaked greentreads in {self.test_case_id}\u0027)"},{"line_number":1176,"context_line":""},{"line_number":1177,"context_line":""},{"line_number":1178,"context_line":"class _FakeGreenThread(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"c2b094ed_3ced9c26","line":1175,"range":{"start_line":1175,"start_character":34,"end_line":1175,"end_character":45},"in_reply_to":"2b90033c_98668d24","updated":"2023-02-08 07:39:37.000000000","message":"Done","commit_id":"0c94a11cb29c96d4a5baa875bcdb0702512206bb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"10de94141830b4cf1ac7b73ab85c6d3a5d9be37a","unresolved":true,"context_lines":[{"line_number":1146,"context_line":"        self.test_case_id \u003d test"},{"line_number":1147,"context_line":""},{"line_number":1148,"context_line":"    def _setUp(self):"},{"line_number":1149,"context_line":"        self.greenpool \u003d eventlet.greenpool.GreenPool()"},{"line_number":1150,"context_line":""},{"line_number":1151,"context_line":"        def _get_default_green_pool():"},{"line_number":1152,"context_line":"            return self.greenpool"}],"source_content_type":"text/x-python","patch_set":4,"id":"088ce739_e25f1420","line":1149,"updated":"2023-02-08 08:47:42.000000000","message":"This can cause a serious behavior change in nova.\n\nThis will make the number of green threads bounded (to 1000 by default). In the baseline nova was able to run as many greenlet as it wished (and fit into memory). So while before leaking a defunct (i.e. forever sleeping) greenlet caused a small memory leak now it can cause a blockage in nova processing if we running out of the free greenlets in the pool. As the default number of greenlets are high we won\u0027t see such blockage in our test but can hit it in production in long running deployments. \n\nSo we need to be careful.\n\nMaybe we need to add some debug log in a periodic about the number of free greenlets in the pool and check that logs in a tempest run to see if the number of used greenlets are stable or increasing.","commit_id":"fa1863663cac1931c8c52df8d7a156eb40804837"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"357112b1678f77553b885df7c19f0135c728f246","unresolved":true,"context_lines":[{"line_number":1146,"context_line":"        self.test_case_id \u003d test"},{"line_number":1147,"context_line":""},{"line_number":1148,"context_line":"    def _setUp(self):"},{"line_number":1149,"context_line":"        self.greenpool \u003d eventlet.greenpool.GreenPool()"},{"line_number":1150,"context_line":""},{"line_number":1151,"context_line":"        def _get_default_green_pool():"},{"line_number":1152,"context_line":"            return self.greenpool"}],"source_content_type":"text/x-python","patch_set":4,"id":"1772c702_40b7cbb8","line":1149,"in_reply_to":"088ce739_e25f1420","updated":"2023-08-22 13:26:55.000000000","message":"i have added a config option which still defaults to 1000 but can be increased if needed.","commit_id":"fa1863663cac1931c8c52df8d7a156eb40804837"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7c8554af0c4c8c588634f61244e71dc26bcc09c7","unresolved":false,"context_lines":[{"line_number":1146,"context_line":"        self.test_case_id \u003d test"},{"line_number":1147,"context_line":""},{"line_number":1148,"context_line":"    def _setUp(self):"},{"line_number":1149,"context_line":"        self.greenpool \u003d eventlet.greenpool.GreenPool()"},{"line_number":1150,"context_line":""},{"line_number":1151,"context_line":"        def _get_default_green_pool():"},{"line_number":1152,"context_line":"            return self.greenpool"}],"source_content_type":"text/x-python","patch_set":4,"id":"e6f87c81_58b55411","line":1149,"in_reply_to":"1772c702_40b7cbb8","updated":"2023-08-22 13:27:43.000000000","message":"Done","commit_id":"fa1863663cac1931c8c52df8d7a156eb40804837"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"10de94141830b4cf1ac7b73ab85c6d3a5d9be37a","unresolved":true,"context_lines":[{"line_number":1154,"context_line":"        # eventlet.spawn_n so we can\u0027t stub out all calls to those functions."},{"line_number":1155,"context_line":"        # Instead since nova only creates greenthreads directly via nova.utils"},{"line_number":1156,"context_line":"        # we stub out the default green pool. This will not capture"},{"line_number":1157,"context_line":"        # Greenthreads created via the standard lib threading module."},{"line_number":1158,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":1159,"context_line":"            \u0027nova.utils._get_default_green_pool\u0027, _get_default_green_pool))"},{"line_number":1160,"context_line":"        self.addCleanup(self.do_cleanup)"}],"source_content_type":"text/x-python","patch_set":4,"id":"f529a0ec_c5383c42","line":1157,"updated":"2023-02-08 08:47:42.000000000","message":"at least RPC handler from oslo.messaging is not using our nova.utils functions so all our RPC handlers will be outside of this pool so if a test leaks that then it won\u0027t be caught here.","commit_id":"fa1863663cac1931c8c52df8d7a156eb40804837"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7c8554af0c4c8c588634f61244e71dc26bcc09c7","unresolved":false,"context_lines":[{"line_number":1154,"context_line":"        # eventlet.spawn_n so we can\u0027t stub out all calls to those functions."},{"line_number":1155,"context_line":"        # Instead since nova only creates greenthreads directly via nova.utils"},{"line_number":1156,"context_line":"        # we stub out the default green pool. This will not capture"},{"line_number":1157,"context_line":"        # Greenthreads created via the standard lib threading module."},{"line_number":1158,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":1159,"context_line":"            \u0027nova.utils._get_default_green_pool\u0027, _get_default_green_pool))"},{"line_number":1160,"context_line":"        self.addCleanup(self.do_cleanup)"}],"source_content_type":"text/x-python","patch_set":4,"id":"e377dd02_0b829a01","line":1157,"in_reply_to":"f529a0ec_c5383c42","updated":"2023-08-22 13:27:43.000000000","message":"Ack","commit_id":"fa1863663cac1931c8c52df8d7a156eb40804837"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3338e2abf08de7cd4cb90b093f27b76691f9c042","unresolved":true,"context_lines":[{"line_number":1164,"context_line":"        if running:"},{"line_number":1165,"context_line":"            self.addDetail("},{"line_number":1166,"context_line":"                \u0027IsolatedGreenPoolFixture\u0027,"},{"line_number":1167,"context_line":"                f\u0027detected leaked greenthreads in {self.test_case_id}\u0027"},{"line_number":1168,"context_line":"                f\u0027waiting for {running} greenthreads to complete.\u0027"},{"line_number":1169,"context_line":"            )"},{"line_number":1170,"context_line":"            # kill all greenthreads in the pool before raising to prevent"},{"line_number":1171,"context_line":"            # them from interfering with other tests."}],"source_content_type":"text/x-python","patch_set":4,"id":"4b20e31f_1e52b5d1","line":1168,"range":{"start_line":1167,"start_character":16,"end_line":1168,"end_character":66},"updated":"2023-02-08 07:59:32.000000000","message":"i might change this to \n\nf\u0027detected {running} leaked greenthreads in {self.test_case_id}\u0027\n\nsince im now going to kill them below but im not going to change this respin this until we get a set of tempest test on this to see if it works well.\n\ni had run unit and fucntional tests locally on an eairler version of this so i expect this to work fine but i want to wait for ci before doing more.\n\nif we get lucky this might even catch something.","commit_id":"fa1863663cac1931c8c52df8d7a156eb40804837"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"f8d8e7a4278f5b2b0a63bcbc9d41fdc44d882549","unresolved":true,"context_lines":[{"line_number":1164,"context_line":"        if running:"},{"line_number":1165,"context_line":"            self.addDetail("},{"line_number":1166,"context_line":"                \u0027IsolatedGreenPoolFixture\u0027,"},{"line_number":1167,"context_line":"                f\u0027detected leaked greenthreads in {self.test_case_id}\u0027"},{"line_number":1168,"context_line":"                f\u0027waiting for {running} greenthreads to complete.\u0027"},{"line_number":1169,"context_line":"            )"},{"line_number":1170,"context_line":"            # kill all greenthreads in the pool before raising to prevent"},{"line_number":1171,"context_line":"            # them from interfering with other tests."}],"source_content_type":"text/x-python","patch_set":4,"id":"55897995_16f12b1e","line":1168,"range":{"start_line":1167,"start_character":16,"end_line":1168,"end_character":66},"in_reply_to":"4b20e31f_1e52b5d1","updated":"2023-02-08 08:12:24.000000000","message":"++","commit_id":"fa1863663cac1931c8c52df8d7a156eb40804837"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7b1a89a1a200bd86ee226fbfcabb2ed78747407d","unresolved":true,"context_lines":[{"line_number":1164,"context_line":"        if running:"},{"line_number":1165,"context_line":"            self.addDetail("},{"line_number":1166,"context_line":"                \u0027IsolatedGreenPoolFixture\u0027,"},{"line_number":1167,"context_line":"                f\u0027detected leaked greenthreads in {self.test_case_id}\u0027"},{"line_number":1168,"context_line":"                f\u0027waiting for {running} greenthreads to complete.\u0027"},{"line_number":1169,"context_line":"            )"},{"line_number":1170,"context_line":"            # kill all greenthreads in the pool before raising to prevent"},{"line_number":1171,"context_line":"            # them from interfering with other tests."}],"source_content_type":"text/x-python","patch_set":4,"id":"838137aa_e65b337f","line":1168,"range":{"start_line":1167,"start_character":16,"end_line":1168,"end_character":66},"in_reply_to":"4b20e31f_1e52b5d1","updated":"2023-02-08 08:13:22.000000000","message":"i should be carful what i ask for.\n\n023-02-08 08:06:53.780506 | ubuntu-jammy |       File \"/home/zuul/src/opendev.org/openstack/nova/nova/tests/fixtures/nova.py\", line 1172, in do_cleanup\n2023-02-08 08:06:53.780513 | ubuntu-jammy |     for gt in self.greenpool.coroutines_running:\n2023-02-08 08:06:53.780519 | ubuntu-jammy |\n2023-02-08 08:06:53.780525 | ubuntu-jammy |     RuntimeError: Set changed size during iteration\n\nso i got a runtime error below just not the one i wanted","commit_id":"fa1863663cac1931c8c52df8d7a156eb40804837"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"357112b1678f77553b885df7c19f0135c728f246","unresolved":false,"context_lines":[{"line_number":1164,"context_line":"        if running:"},{"line_number":1165,"context_line":"            self.addDetail("},{"line_number":1166,"context_line":"                \u0027IsolatedGreenPoolFixture\u0027,"},{"line_number":1167,"context_line":"                f\u0027detected leaked greenthreads in {self.test_case_id}\u0027"},{"line_number":1168,"context_line":"                f\u0027waiting for {running} greenthreads to complete.\u0027"},{"line_number":1169,"context_line":"            )"},{"line_number":1170,"context_line":"            # kill all greenthreads in the pool before raising to prevent"},{"line_number":1171,"context_line":"            # them from interfering with other tests."}],"source_content_type":"text/x-python","patch_set":4,"id":"be7a85a1_cf6922cd","line":1168,"range":{"start_line":1167,"start_character":16,"end_line":1168,"end_character":66},"in_reply_to":"838137aa_e65b337f","updated":"2023-08-22 13:26:55.000000000","message":"Done","commit_id":"fa1863663cac1931c8c52df8d7a156eb40804837"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7b1a89a1a200bd86ee226fbfcabb2ed78747407d","unresolved":true,"context_lines":[{"line_number":1170,"context_line":"            # kill all greenthreads in the pool before raising to prevent"},{"line_number":1171,"context_line":"            # them from interfering with other tests."},{"line_number":1172,"context_line":"            for gt in self.greenpool.coroutines_running:"},{"line_number":1173,"context_line":"                gt.kill()"},{"line_number":1174,"context_line":"            raise RuntimeError("},{"line_number":1175,"context_line":"                f\u0027detected leaked greenthreads in {self.test_case_id}\u0027)"},{"line_number":1176,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"74566720_b9cac15a","line":1173,"range":{"start_line":1173,"start_character":15,"end_line":1173,"end_character":25},"updated":"2023-02-08 08:13:22.000000000","message":"this modifeds the set so i need to make a copy.\n\nbut the fact that this ran means it detected testcases that were leaking greenthreads\n\nhttps://zuul.opendev.org/t/openstack/stream/be4df4f3d6fa4d1fbb46cc312a10cb1b?logfile\u003dconsole.log is still running so ill let it finish then adress this when the rest of the zuul jobs report back\n\nnova.tests.unit.virt.libvirt.test_driver.LibvirtConnTestCase.test__check_cpu_compatibility_none_models \n\nis one of the tests that is leaking we will see if it finds more","commit_id":"fa1863663cac1931c8c52df8d7a156eb40804837"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f5076626653938cbd504f91be4ff2af2cb699f55","unresolved":true,"context_lines":[{"line_number":1170,"context_line":"            # kill all greenthreads in the pool before raising to prevent"},{"line_number":1171,"context_line":"            # them from interfering with other tests."},{"line_number":1172,"context_line":"            for gt in self.greenpool.coroutines_running:"},{"line_number":1173,"context_line":"                gt.kill()"},{"line_number":1174,"context_line":"            raise RuntimeError("},{"line_number":1175,"context_line":"                f\u0027detected leaked greenthreads in {self.test_case_id}\u0027)"},{"line_number":1176,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"53999707_968ef35b","line":1173,"range":{"start_line":1173,"start_character":15,"end_line":1173,"end_character":25},"in_reply_to":"28ef6cbf_979d3ab4","updated":"2023-02-08 13:38:30.000000000","message":"Yepp spawn_n generate naked greenlets so they cannot be killed. :/","commit_id":"fa1863663cac1931c8c52df8d7a156eb40804837"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"28d13ded70be0fc80d105cdcc5efe019e4651562","unresolved":true,"context_lines":[{"line_number":1170,"context_line":"            # kill all greenthreads in the pool before raising to prevent"},{"line_number":1171,"context_line":"            # them from interfering with other tests."},{"line_number":1172,"context_line":"            for gt in self.greenpool.coroutines_running:"},{"line_number":1173,"context_line":"                gt.kill()"},{"line_number":1174,"context_line":"            raise RuntimeError("},{"line_number":1175,"context_line":"                f\u0027detected leaked greenthreads in {self.test_case_id}\u0027)"},{"line_number":1176,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"e0dab134_e3771487","line":1173,"range":{"start_line":1173,"start_character":15,"end_line":1173,"end_character":25},"in_reply_to":"53999707_968ef35b","updated":"2023-02-08 17:12:44.000000000","message":"Maybe we could do the first pass calling kill() and then wait() on the rest? Should theoretically still be faster to wait for fewer threads than to wait for all of them.","commit_id":"fa1863663cac1931c8c52df8d7a156eb40804837"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"52a294977f8c2be917b03420d87a7fa9742f6bb9","unresolved":true,"context_lines":[{"line_number":1170,"context_line":"            # kill all greenthreads in the pool before raising to prevent"},{"line_number":1171,"context_line":"            # them from interfering with other tests."},{"line_number":1172,"context_line":"            for gt in self.greenpool.coroutines_running:"},{"line_number":1173,"context_line":"                gt.kill()"},{"line_number":1174,"context_line":"            raise RuntimeError("},{"line_number":1175,"context_line":"                f\u0027detected leaked greenthreads in {self.test_case_id}\u0027)"},{"line_number":1176,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"28ef6cbf_979d3ab4","line":1173,"range":{"start_line":1173,"start_character":15,"end_line":1173,"end_character":25},"in_reply_to":"7235188e_4eb10c84","updated":"2023-02-08 09:04:01.000000000","message":"ok so there is another edgecase\n\nsome of the \"Greanthreads\" are actully greenlets likely for spawn_n and those dont have kill. so ill have to handel that too","commit_id":"fa1863663cac1931c8c52df8d7a156eb40804837"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"10de94141830b4cf1ac7b73ab85c6d3a5d9be37a","unresolved":true,"context_lines":[{"line_number":1170,"context_line":"            # kill all greenthreads in the pool before raising to prevent"},{"line_number":1171,"context_line":"            # them from interfering with other tests."},{"line_number":1172,"context_line":"            for gt in self.greenpool.coroutines_running:"},{"line_number":1173,"context_line":"                gt.kill()"},{"line_number":1174,"context_line":"            raise RuntimeError("},{"line_number":1175,"context_line":"                f\u0027detected leaked greenthreads in {self.test_case_id}\u0027)"},{"line_number":1176,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"27bc5618_95d1aab6","line":1173,"range":{"start_line":1173,"start_character":15,"end_line":1173,"end_character":25},"in_reply_to":"7235188e_4eb10c84","updated":"2023-02-08 08:47:42.000000000","message":"would be nice to get a stack trace of the leaked greenlet I hope it can be extracted from it somehow.","commit_id":"fa1863663cac1931c8c52df8d7a156eb40804837"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a69d087d6c6e3cf4b22ffef63b3bff5377332dbc","unresolved":true,"context_lines":[{"line_number":1170,"context_line":"            # kill all greenthreads in the pool before raising to prevent"},{"line_number":1171,"context_line":"            # them from interfering with other tests."},{"line_number":1172,"context_line":"            for gt in self.greenpool.coroutines_running:"},{"line_number":1173,"context_line":"                gt.kill()"},{"line_number":1174,"context_line":"            raise RuntimeError("},{"line_number":1175,"context_line":"                f\u0027detected leaked greenthreads in {self.test_case_id}\u0027)"},{"line_number":1176,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7235188e_4eb10c84","line":1173,"range":{"start_line":1173,"start_character":15,"end_line":1173,"end_character":25},"in_reply_to":"74566720_b9cac15a","updated":"2023-02-08 08:14:45.000000000","message":"and here is the full list\nhttps://2f622fb6915ea6772a94-26db3adf591a82ec37c96a7d3180086f.ssl.cf2.rackcdn.com/873061/4/check/openstack-tox-py310/be4df4f/testr_results.html","commit_id":"fa1863663cac1931c8c52df8d7a156eb40804837"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"10de94141830b4cf1ac7b73ab85c6d3a5d9be37a","unresolved":true,"context_lines":[{"line_number":1173,"context_line":"                gt.kill()"},{"line_number":1174,"context_line":"            raise RuntimeError("},{"line_number":1175,"context_line":"                f\u0027detected leaked greenthreads in {self.test_case_id}\u0027)"},{"line_number":1176,"context_line":""},{"line_number":1177,"context_line":""},{"line_number":1178,"context_line":"class _FakeGreenThread(object):"},{"line_number":1179,"context_line":"    def __init__(self, func, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"80835739_ae8d49f4","line":1176,"updated":"2023-02-08 08:47:42.000000000","message":"I\u0027m wondering whether we need to reset DEFAULT_GREEN_POOL or it is OK to keep that global around between test cases.","commit_id":"fa1863663cac1931c8c52df8d7a156eb40804837"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"28d13ded70be0fc80d105cdcc5efe019e4651562","unresolved":true,"context_lines":[{"line_number":1173,"context_line":"                gt.kill()"},{"line_number":1174,"context_line":"            raise RuntimeError("},{"line_number":1175,"context_line":"                f\u0027detected leaked greenthreads in {self.test_case_id}\u0027)"},{"line_number":1176,"context_line":""},{"line_number":1177,"context_line":""},{"line_number":1178,"context_line":"class _FakeGreenThread(object):"},{"line_number":1179,"context_line":"    def __init__(self, func, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"e8473312_0f197cd0","line":1176,"in_reply_to":"80835739_ae8d49f4","updated":"2023-02-08 17:12:44.000000000","message":"I was wondering that too.","commit_id":"fa1863663cac1931c8c52df8d7a156eb40804837"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e3f006bf9c06b83b0828848605f7e075163ec3b0","unresolved":false,"context_lines":[{"line_number":1173,"context_line":"                gt.kill()"},{"line_number":1174,"context_line":"            raise RuntimeError("},{"line_number":1175,"context_line":"                f\u0027detected leaked greenthreads in {self.test_case_id}\u0027)"},{"line_number":1176,"context_line":""},{"line_number":1177,"context_line":""},{"line_number":1178,"context_line":"class _FakeGreenThread(object):"},{"line_number":1179,"context_line":"    def __init__(self, func, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"36999e20_d2fd9074","line":1176,"in_reply_to":"9cbda5c4_699a9e13","updated":"2023-08-25 02:02:42.000000000","message":"Done","commit_id":"fa1863663cac1931c8c52df8d7a156eb40804837"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"357112b1678f77553b885df7c19f0135c728f246","unresolved":true,"context_lines":[{"line_number":1173,"context_line":"                gt.kill()"},{"line_number":1174,"context_line":"            raise RuntimeError("},{"line_number":1175,"context_line":"                f\u0027detected leaked greenthreads in {self.test_case_id}\u0027)"},{"line_number":1176,"context_line":""},{"line_number":1177,"context_line":""},{"line_number":1178,"context_line":"class _FakeGreenThread(object):"},{"line_number":1179,"context_line":"    def __init__(self, func, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9cbda5c4_699a9e13","line":1176,"in_reply_to":"e8473312_0f197cd0","updated":"2023-08-22 13:26:55.000000000","message":"DEFAULT_GREEN_POOL should not be used since im using a fixture to replace it in setup.\nbut i can add this sure.","commit_id":"fa1863663cac1931c8c52df8d7a156eb40804837"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"5eada912719fc12bd63d359ac882ef2ba25aac89","unresolved":true,"context_lines":[{"line_number":1187,"context_line":"                    \u0027IsolatedGreenPoolFixture\u0027,"},{"line_number":1188,"context_line":"                    f\u0027no leaked greenthreads detected in {self.test_case_id} \u0027"},{"line_number":1189,"context_line":"                    \u0027but some greenlets were running when the test finished.\u0027"},{"line_number":1190,"context_line":"                    \u0027they cannot be killed so they may interact with \u0027"},{"line_number":1191,"context_line":"                    \u0027other tests if they raiase exceptions. \u0027"},{"line_number":1192,"context_line":"                    \u0027These greenlets were likely created by spanw_n and\u0027"},{"line_number":1193,"context_line":"                    \u0027and therefor are not expected to return or raise.\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"0fbadaf3_16eacd29","line":1190,"range":{"start_line":1190,"start_character":21,"end_line":1190,"end_character":25},"updated":"2023-08-23 17:32:09.000000000","message":"They","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e3f006bf9c06b83b0828848605f7e075163ec3b0","unresolved":false,"context_lines":[{"line_number":1187,"context_line":"                    \u0027IsolatedGreenPoolFixture\u0027,"},{"line_number":1188,"context_line":"                    f\u0027no leaked greenthreads detected in {self.test_case_id} \u0027"},{"line_number":1189,"context_line":"                    \u0027but some greenlets were running when the test finished.\u0027"},{"line_number":1190,"context_line":"                    \u0027they cannot be killed so they may interact with \u0027"},{"line_number":1191,"context_line":"                    \u0027other tests if they raiase exceptions. \u0027"},{"line_number":1192,"context_line":"                    \u0027These greenlets were likely created by spanw_n and\u0027"},{"line_number":1193,"context_line":"                    \u0027and therefor are not expected to return or raise.\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"e76b98ad_2f9b0f0e","line":1190,"range":{"start_line":1190,"start_character":21,"end_line":1190,"end_character":25},"in_reply_to":"0fbadaf3_16eacd29","updated":"2023-08-25 02:02:42.000000000","message":"Done","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"5eada912719fc12bd63d359ac882ef2ba25aac89","unresolved":true,"context_lines":[{"line_number":1188,"context_line":"                    f\u0027no leaked greenthreads detected in {self.test_case_id} \u0027"},{"line_number":1189,"context_line":"                    \u0027but some greenlets were running when the test finished.\u0027"},{"line_number":1190,"context_line":"                    \u0027they cannot be killed so they may interact with \u0027"},{"line_number":1191,"context_line":"                    \u0027other tests if they raiase exceptions. \u0027"},{"line_number":1192,"context_line":"                    \u0027These greenlets were likely created by spanw_n and\u0027"},{"line_number":1193,"context_line":"                    \u0027and therefor are not expected to return or raise.\u0027"},{"line_number":1194,"context_line":"                )"}],"source_content_type":"text/x-python","patch_set":8,"id":"6001c61d_b61f5ac6","line":1191,"range":{"start_line":1191,"start_character":41,"end_line":1191,"end_character":47},"updated":"2023-08-23 17:32:09.000000000","message":"raise","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e3f006bf9c06b83b0828848605f7e075163ec3b0","unresolved":false,"context_lines":[{"line_number":1188,"context_line":"                    f\u0027no leaked greenthreads detected in {self.test_case_id} \u0027"},{"line_number":1189,"context_line":"                    \u0027but some greenlets were running when the test finished.\u0027"},{"line_number":1190,"context_line":"                    \u0027they cannot be killed so they may interact with \u0027"},{"line_number":1191,"context_line":"                    \u0027other tests if they raiase exceptions. \u0027"},{"line_number":1192,"context_line":"                    \u0027These greenlets were likely created by spanw_n and\u0027"},{"line_number":1193,"context_line":"                    \u0027and therefor are not expected to return or raise.\u0027"},{"line_number":1194,"context_line":"                )"}],"source_content_type":"text/x-python","patch_set":8,"id":"f633677c_b53867e6","line":1191,"range":{"start_line":1191,"start_character":41,"end_line":1191,"end_character":47},"in_reply_to":"6001c61d_b61f5ac6","updated":"2023-08-25 02:02:42.000000000","message":"Done","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"5eada912719fc12bd63d359ac882ef2ba25aac89","unresolved":true,"context_lines":[{"line_number":1189,"context_line":"                    \u0027but some greenlets were running when the test finished.\u0027"},{"line_number":1190,"context_line":"                    \u0027they cannot be killed so they may interact with \u0027"},{"line_number":1191,"context_line":"                    \u0027other tests if they raiase exceptions. \u0027"},{"line_number":1192,"context_line":"                    \u0027These greenlets were likely created by spanw_n and\u0027"},{"line_number":1193,"context_line":"                    \u0027and therefor are not expected to return or raise.\u0027"},{"line_number":1194,"context_line":"                )"},{"line_number":1195,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9f468e54_64cbb194","line":1192,"range":{"start_line":1192,"start_character":60,"end_line":1192,"end_character":67},"updated":"2023-08-23 17:32:09.000000000","message":"spawn_n","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e3f006bf9c06b83b0828848605f7e075163ec3b0","unresolved":false,"context_lines":[{"line_number":1189,"context_line":"                    \u0027but some greenlets were running when the test finished.\u0027"},{"line_number":1190,"context_line":"                    \u0027they cannot be killed so they may interact with \u0027"},{"line_number":1191,"context_line":"                    \u0027other tests if they raiase exceptions. \u0027"},{"line_number":1192,"context_line":"                    \u0027These greenlets were likely created by spanw_n and\u0027"},{"line_number":1193,"context_line":"                    \u0027and therefor are not expected to return or raise.\u0027"},{"line_number":1194,"context_line":"                )"},{"line_number":1195,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"2de9523f_3ca5c78e","line":1192,"range":{"start_line":1192,"start_character":60,"end_line":1192,"end_character":67},"in_reply_to":"9f468e54_64cbb194","updated":"2023-08-25 02:02:42.000000000","message":"Done","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"5eada912719fc12bd63d359ac882ef2ba25aac89","unresolved":true,"context_lines":[{"line_number":1190,"context_line":"                    \u0027they cannot be killed so they may interact with \u0027"},{"line_number":1191,"context_line":"                    \u0027other tests if they raiase exceptions. \u0027"},{"line_number":1192,"context_line":"                    \u0027These greenlets were likely created by spanw_n and\u0027"},{"line_number":1193,"context_line":"                    \u0027and therefor are not expected to return or raise.\u0027"},{"line_number":1194,"context_line":"                )"},{"line_number":1195,"context_line":""},{"line_number":1196,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"05b5ae13_cf54d903","line":1193,"range":{"start_line":1193,"start_character":25,"end_line":1193,"end_character":33},"updated":"2023-08-23 17:32:09.000000000","message":"therefore","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e3f006bf9c06b83b0828848605f7e075163ec3b0","unresolved":false,"context_lines":[{"line_number":1190,"context_line":"                    \u0027they cannot be killed so they may interact with \u0027"},{"line_number":1191,"context_line":"                    \u0027other tests if they raiase exceptions. \u0027"},{"line_number":1192,"context_line":"                    \u0027These greenlets were likely created by spanw_n and\u0027"},{"line_number":1193,"context_line":"                    \u0027and therefor are not expected to return or raise.\u0027"},{"line_number":1194,"context_line":"                )"},{"line_number":1195,"context_line":""},{"line_number":1196,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"6f84086b_6800ae25","line":1193,"range":{"start_line":1193,"start_character":25,"end_line":1193,"end_character":33},"in_reply_to":"05b5ae13_cf54d903","updated":"2023-08-25 02:02:42.000000000","message":"Done","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"901c2040eae4a4e66d2132884cc04bce516ad607","unresolved":false,"context_lines":[{"line_number":1169,"context_line":"                if isinstance(gt, eventlet.greenthread.GreenThread):"},{"line_number":1170,"context_line":"                    gt.kill()"},{"line_number":1171,"context_line":"            # reset the global greenpool just in case."},{"line_number":1172,"context_line":"            utils.DEFAULT_GREEN_POOL \u003d eventlet.greenpool.GreenPool()"},{"line_number":1173,"context_line":"            if any("},{"line_number":1174,"context_line":"                isinstance(gt, eventlet.greenthread.GreenThread)"},{"line_number":1175,"context_line":"                for gt in self.greenpool.coroutines_running"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf9c8df2_953fa84c","line":1172,"updated":"2023-08-25 14:19:05.000000000","message":"It helps knowning which test case leaks.","commit_id":"d71d2dc219b359c00f0fe596d6ffd81e343ecc43"}],"nova/virt/libvirt/host.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"5eada912719fc12bd63d359ac882ef2ba25aac89","unresolved":true,"context_lines":[{"line_number":501,"context_line":""},{"line_number":502,"context_line":"        LOG.debug(\"Starting connection event dispatch thread\")"},{"line_number":503,"context_line":"        # this never returns so use spawn_n"},{"line_number":504,"context_line":"        utils.spawn_n(self._conn_event_thread)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    def _get_new_connection(self):"},{"line_number":507,"context_line":"        # call with _wrapped_conn_lock held"}],"source_content_type":"text/x-python","patch_set":8,"id":"23c2c44a_b40734bc","line":504,"updated":"2023-08-23 17:32:09.000000000","message":"I don\u0027t think I understand this part ... is there a problem with using spawn here? Why do we need to use spawn_n?","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6167c375dff31c4832d68dd76cbab35ea22359e3","unresolved":true,"context_lines":[{"line_number":501,"context_line":""},{"line_number":502,"context_line":"        LOG.debug(\"Starting connection event dispatch thread\")"},{"line_number":503,"context_line":"        # this never returns so use spawn_n"},{"line_number":504,"context_line":"        utils.spawn_n(self._conn_event_thread)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    def _get_new_connection(self):"},{"line_number":507,"context_line":"        # call with _wrapped_conn_lock held"}],"source_content_type":"text/x-python","patch_set":8,"id":"3bc0c072_f5bfe572","line":504,"in_reply_to":"23c2c44a_b40734bc","updated":"2023-08-23 17:44:32.000000000","message":"spawn works fine\ni think spwan_n is less overhead so i changed it but i can change it back.","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"b84d607e1c33199d701caeec57c92aee159b5e4a","unresolved":true,"context_lines":[{"line_number":501,"context_line":""},{"line_number":502,"context_line":"        LOG.debug(\"Starting connection event dispatch thread\")"},{"line_number":503,"context_line":"        # this never returns so use spawn_n"},{"line_number":504,"context_line":"        utils.spawn_n(self._conn_event_thread)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    def _get_new_connection(self):"},{"line_number":507,"context_line":"        # call with _wrapped_conn_lock held"}],"source_content_type":"text/x-python","patch_set":8,"id":"5b8c38cc_4fe59cdd","line":504,"in_reply_to":"3bc0c072_f5bfe572","updated":"2023-08-23 18:24:57.000000000","message":"It\u0027s supposed to be but ... based on my experience with the lengthy discussion in an old eventlet issue I opened [1], the message I took from it was pretty much \"we expect people to use spawn and spawn_n is not well defined/supported\", so I\u0027m not sure we want to add new spawn_n unless it\u0027s really needed. Just MHO.\n\n[1] https://github.com/eventlet/eventlet/issues/731","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e3f006bf9c06b83b0828848605f7e075163ec3b0","unresolved":false,"context_lines":[{"line_number":501,"context_line":""},{"line_number":502,"context_line":"        LOG.debug(\"Starting connection event dispatch thread\")"},{"line_number":503,"context_line":"        # this never returns so use spawn_n"},{"line_number":504,"context_line":"        utils.spawn_n(self._conn_event_thread)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    def _get_new_connection(self):"},{"line_number":507,"context_line":"        # call with _wrapped_conn_lock held"}],"source_content_type":"text/x-python","patch_set":8,"id":"b091e5cc_6b53df1a","line":504,"in_reply_to":"5b8c38cc_4fe59cdd","updated":"2023-08-25 02:02:42.000000000","message":"Done i dont think we wever really need to use spawn_n so i might add a follow up commit that just removes it entirely if there really is a benifit and it has undefiend behvior.","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"}],"tox.ini":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"5eada912719fc12bd63d359ac882ef2ba25aac89","unresolved":true,"context_lines":[{"line_number":32,"context_line":"  GENERATE_HASHES"},{"line_number":33,"context_line":"# Note(sean-k-mooney):"},{"line_number":34,"context_line":"# leaking greanthreads between tests is a bug so we should fail if it happens"},{"line_number":35,"context_line":"# however unlike greenthreads, greanlets cannot be killed via a test fixture."},{"line_number":36,"context_line":"# greenlet leaks will be annotated in the test details but will not cause a"},{"line_number":37,"context_line":"# failure. if you want to make them raise set"},{"line_number":38,"context_line":"# NOVA_RAISE_ON_GREENLET_LEAK\u003d1|true|yes"}],"source_content_type":"text/x-properties","patch_set":8,"id":"10d562b0_54aa8bbf","line":35,"range":{"start_line":35,"start_character":31,"end_line":35,"end_character":40},"updated":"2023-08-23 17:32:09.000000000","message":"greenlets","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e3f006bf9c06b83b0828848605f7e075163ec3b0","unresolved":false,"context_lines":[{"line_number":32,"context_line":"  GENERATE_HASHES"},{"line_number":33,"context_line":"# Note(sean-k-mooney):"},{"line_number":34,"context_line":"# leaking greanthreads between tests is a bug so we should fail if it happens"},{"line_number":35,"context_line":"# however unlike greenthreads, greanlets cannot be killed via a test fixture."},{"line_number":36,"context_line":"# greenlet leaks will be annotated in the test details but will not cause a"},{"line_number":37,"context_line":"# failure. if you want to make them raise set"},{"line_number":38,"context_line":"# NOVA_RAISE_ON_GREENLET_LEAK\u003d1|true|yes"}],"source_content_type":"text/x-properties","patch_set":8,"id":"102480b4_65da809a","line":35,"range":{"start_line":35,"start_character":31,"end_line":35,"end_character":40},"in_reply_to":"10d562b0_54aa8bbf","updated":"2023-08-25 02:02:42.000000000","message":"Done","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"5eada912719fc12bd63d359ac882ef2ba25aac89","unresolved":true,"context_lines":[{"line_number":38,"context_line":"# NOVA_RAISE_ON_GREENLET_LEAK\u003d1|true|yes"},{"line_number":39,"context_line":"# All simiple leaks of green threads have been resolved the remaining 7"},{"line_number":40,"context_line":"# functional test failures where greenlet leaks happen are non trivial"},{"line_number":41,"context_line":"# to adress as there is no obvious cause so they are ignored for now."},{"line_number":42,"context_line":"  NOVA_RAISE_ON_GREENLET_LEAK"},{"line_number":43,"context_line":"# NOTE(sean-k-mooney) optimization is enabled by default and when enabled"},{"line_number":44,"context_line":"# asserts are complied out. Disable optimization to allow asserts in"}],"source_content_type":"text/x-properties","patch_set":8,"id":"5c1ce402_06d496a2","line":41,"range":{"start_line":41,"start_character":5,"end_line":41,"end_character":11},"updated":"2023-08-23 17:32:09.000000000","message":"address","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e3f006bf9c06b83b0828848605f7e075163ec3b0","unresolved":false,"context_lines":[{"line_number":38,"context_line":"# NOVA_RAISE_ON_GREENLET_LEAK\u003d1|true|yes"},{"line_number":39,"context_line":"# All simiple leaks of green threads have been resolved the remaining 7"},{"line_number":40,"context_line":"# functional test failures where greenlet leaks happen are non trivial"},{"line_number":41,"context_line":"# to adress as there is no obvious cause so they are ignored for now."},{"line_number":42,"context_line":"  NOVA_RAISE_ON_GREENLET_LEAK"},{"line_number":43,"context_line":"# NOTE(sean-k-mooney) optimization is enabled by default and when enabled"},{"line_number":44,"context_line":"# asserts are complied out. Disable optimization to allow asserts in"}],"source_content_type":"text/x-properties","patch_set":8,"id":"b0a63170_a2cf226d","line":41,"range":{"start_line":41,"start_character":5,"end_line":41,"end_character":11},"in_reply_to":"5c1ce402_06d496a2","updated":"2023-08-25 02:02:42.000000000","message":"Done","commit_id":"2d3232bb9755bdd2c2cff7afb7d8014b4c1162f6"}]}
