)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5a2dc26749773f049b790961945f5f6683d906eb","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This allowes nova-compute to finish creating all currently spawning instances,"},{"line_number":10,"context_line":"when SIGTERM is sent to nova-compute process."},{"line_number":11,"context_line":"graceful_shutdown_timeout in nova.conf is set to 9000 - must set a bigger number in"},{"line_number":12,"context_line":"order to work."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-Bug: #1798326"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9fb8cfa7_b3f19f6d","line":11,"range":{"start_line":11,"start_character":49,"end_line":11,"end_character":53},"updated":"2019-07-01 14:40:09.000000000","message":"The code says 900.","commit_id":"23f4d637d3663fc12dbd67aff4615e2a9c5f5a7c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5a2dc26749773f049b790961945f5f6683d906eb","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This allowes nova-compute to finish creating all currently spawning instances,"},{"line_number":10,"context_line":"when SIGTERM is sent to nova-compute process."},{"line_number":11,"context_line":"graceful_shutdown_timeout in nova.conf is set to 9000 - must set a bigger number in"},{"line_number":12,"context_line":"order to work."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-Bug: #1798326"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9fb8cfa7_f3e1579c","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":48},"updated":"2019-07-01 14:40:09.000000000","message":"This makes it sound like you\u0027re modifying an existing option but it\u0027s actually a new option. You might want to explain you\u0027re adding new options in the commit message.","commit_id":"23f4d637d3663fc12dbd67aff4615e2a9c5f5a7c"},{"author":{"_account_id":28100,"name":"Martin Midolesov","email":"mmidolesov@vmware.com","username":"martinmidolesov"},"change_message_id":"f7452155836d4d441d7d107f51383dacc18eb121","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This allowes nova-compute to finish creating all currently spawning instances,"},{"line_number":10,"context_line":"when SIGTERM is sent to nova-compute process."},{"line_number":11,"context_line":"graceful_shutdown_timeout in nova.conf is set to 9000 - must set a bigger number in"},{"line_number":12,"context_line":"order to work."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-Bug: #1798326"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9fb8cfa7_99cb501c","line":11,"range":{"start_line":11,"start_character":49,"end_line":11,"end_character":53},"in_reply_to":"9fb8cfa7_b3f19f6d","updated":"2019-07-02 07:36:45.000000000","message":"Yeah it was a typo. I will commit the with the correct value.","commit_id":"23f4d637d3663fc12dbd67aff4615e2a9c5f5a7c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5a2dc26749773f049b790961945f5f6683d906eb","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This allowes nova-compute to finish creating all currently spawning instances,"},{"line_number":10,"context_line":"when SIGTERM is sent to nova-compute process."},{"line_number":11,"context_line":"graceful_shutdown_timeout in nova.conf is set to 9000 - must set a bigger number in"},{"line_number":12,"context_line":"order to work."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-Bug: #1798326"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9fb8cfa7_d3f4535d","line":12,"range":{"start_line":11,"start_character":56,"end_line":12,"end_character":14},"updated":"2019-07-01 14:40:09.000000000","message":"Is this vmware specific if you have a single nova-compute managing 1000 VMs in a vcenter cluster? Couldn\u0027t this realistically be much smaller for a KVM host, for example?","commit_id":"23f4d637d3663fc12dbd67aff4615e2a9c5f5a7c"},{"author":{"_account_id":28100,"name":"Martin Midolesov","email":"mmidolesov@vmware.com","username":"martinmidolesov"},"change_message_id":"f7452155836d4d441d7d107f51383dacc18eb121","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This allowes nova-compute to finish creating all currently spawning instances,"},{"line_number":10,"context_line":"when SIGTERM is sent to nova-compute process."},{"line_number":11,"context_line":"graceful_shutdown_timeout in nova.conf is set to 9000 - must set a bigger number in"},{"line_number":12,"context_line":"order to work."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-Bug: #1798326"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9fb8cfa7_d96ea82a","line":12,"range":{"start_line":11,"start_character":56,"end_line":12,"end_character":14},"in_reply_to":"9fb8cfa7_d3f4535d","updated":"2019-07-02 07:36:45.000000000","message":"Yeah I know vCenter can handle this - what will be appropriate value for the other hypervisors? I can set it to something smaller like 30.","commit_id":"23f4d637d3663fc12dbd67aff4615e2a9c5f5a7c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"094c39eefa694ac8867a1bcd2d7a9430d9fdd1eb","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implementing graceful shutdown."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This allowes nova-compute to finish creating all currently spawning instances,"},{"line_number":10,"context_line":"when SIGTERM is sent to nova-compute process."},{"line_number":11,"context_line":"For larger number of VM\u0027s `graceful_shutdown_timeout` in `nova.conf` must be"},{"line_number":12,"context_line":"set to a bigger number in order to work."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"7faddb67_dabea0ac","line":9,"range":{"start_line":9,"start_character":5,"end_line":9,"end_character":12},"updated":"2019-07-19 20:10:47.000000000","message":"allows","commit_id":"10d66947d359657814500cedd039c2e9e60625c3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"891908810025deed66f63bd56da9d8beb3a2fabf","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2019-07-24 01:32:22 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implementing graceful shutdown."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This allows nova-compute to finish creating all currently spawning instances,"},{"line_number":10,"context_line":"when SIGTERM is sent to nova-compute process."},{"line_number":11,"context_line":"For larger number of VM\u0027s `graceful_shutdown_timeout` in `nova.conf` must be"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7faddb67_6cabfd74","line":8,"updated":"2019-07-24 13:56:28.000000000","message":"Please update this commit message with a bit more detail. The key thing to mention is that you\u0027re increasing the probability of nova-compute being able to complete spawns during service shutdown by doing the spawns in a separate thread pool whose size is controlled by a new [DEFAULT]/instance_spawning_pool_size config opt.","commit_id":"e4f55768173477deeb8f04ea4469ce6fa3090826"},{"author":{"_account_id":28100,"name":"Martin Midolesov","email":"mmidolesov@vmware.com","username":"martinmidolesov"},"change_message_id":"6864bc0f9c25b70e83f03d942a702bed43c1c229","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2019-07-24 01:32:22 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implementing graceful shutdown."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This allows nova-compute to finish creating all currently spawning instances,"},{"line_number":10,"context_line":"when SIGTERM is sent to nova-compute process."},{"line_number":11,"context_line":"For larger number of VM\u0027s `graceful_shutdown_timeout` in `nova.conf` must be"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7faddb67_6c2d3da7","line":8,"in_reply_to":"7faddb67_6cabfd74","updated":"2019-07-24 14:06:10.000000000","message":"Sure I\u0027ll give more details","commit_id":"e4f55768173477deeb8f04ea4469ce6fa3090826"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"120c9486a2a881fad83399bddcd3dda2c984c01a","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This allows nova-compute to finish creating all currently spawning instances,"},{"line_number":10,"context_line":"when SIGTERM is sent to nova-compute process."},{"line_number":11,"context_line":"This is done by putting all spawning instances in a separate thread"},{"line_number":12,"context_line":"pool, which uses [DEFAULT]/instance_spawning_pool_size config opt for setting"},{"line_number":13,"context_line":"the size of the pool."},{"line_number":14,"context_line":"For larger number of VM\u0027s `graceful_shutdown_timeout` in `nova.conf` must be"},{"line_number":15,"context_line":"set to a bigger number in order to work."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"3fa7e38b_ae10c259","line":12,"range":{"start_line":12,"start_character":17,"end_line":12,"end_character":26},"updated":"2020-02-07 13:38:35.000000000","message":"isn\u0027t it in the [compute] section now?","commit_id":"c1429569ba97f499b5afad34c54904846eefcdd7"}],"nova/compute/manager.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"094c39eefa694ac8867a1bcd2d7a9430d9fdd1eb","unresolved":false,"context_lines":[{"line_number":508,"context_line":"        self.instance_events \u003d InstanceEvents()"},{"line_number":509,"context_line":"        self._sync_power_pool \u003d eventlet.GreenPool("},{"line_number":510,"context_line":"            size\u003dCONF.sync_power_state_pool_size)"},{"line_number":511,"context_line":"        self.instance_running_pool \u003d utils.PoolProxy(eventlet.GreenPool("},{"line_number":512,"context_line":"            size\u003dCONF.instance_spawning_pool_size))"},{"line_number":513,"context_line":"        self._syncs_in_progress \u003d {}"},{"line_number":514,"context_line":"        self.send_instance_updates \u003d ("}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_fa57dc56","line":511,"range":{"start_line":511,"start_character":37,"end_line":511,"end_character":52},"updated":"2019-07-19 20:10:47.000000000","message":"Why do we need a proxy here? Why can\u0027t self.instance_running_pool simply be the eventlet.GreenPool?","commit_id":"10d66947d359657814500cedd039c2e9e60625c3"},{"author":{"_account_id":26250,"name":"Johannes Kulik","email":"johannes.kulik@sap.com","username":"jkulik"},"change_message_id":"8f7ae65b6998d27630d87c0c88c6bf601c50c29b","unresolved":false,"context_lines":[{"line_number":508,"context_line":"        self.instance_events \u003d InstanceEvents()"},{"line_number":509,"context_line":"        self._sync_power_pool \u003d eventlet.GreenPool("},{"line_number":510,"context_line":"            size\u003dCONF.sync_power_state_pool_size)"},{"line_number":511,"context_line":"        self.instance_running_pool \u003d utils.PoolProxy(eventlet.GreenPool("},{"line_number":512,"context_line":"            size\u003dCONF.instance_spawning_pool_size))"},{"line_number":513,"context_line":"        self._syncs_in_progress \u003d {}"},{"line_number":514,"context_line":"        self.send_instance_updates \u003d ("}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_fb190222","line":511,"range":{"start_line":511,"start_character":37,"end_line":511,"end_character":52},"in_reply_to":"7faddb67_e33965d8","updated":"2019-07-23 07:36:02.000000000","message":"We already have a proxy-function in place for the same reason: nova.utils.spawn_n\n\u003e     This utility exists so that it can be stubbed for testing without\n\u003e    interfering with the service spawns.","commit_id":"10d66947d359657814500cedd039c2e9e60625c3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ed3c692eaf4bf1f28bd78c747cde3adefaddad76","unresolved":false,"context_lines":[{"line_number":508,"context_line":"        self.instance_events \u003d InstanceEvents()"},{"line_number":509,"context_line":"        self._sync_power_pool \u003d eventlet.GreenPool("},{"line_number":510,"context_line":"            size\u003dCONF.sync_power_state_pool_size)"},{"line_number":511,"context_line":"        self.instance_running_pool \u003d utils.PoolProxy(eventlet.GreenPool("},{"line_number":512,"context_line":"            size\u003dCONF.instance_spawning_pool_size))"},{"line_number":513,"context_line":"        self._syncs_in_progress \u003d {}"},{"line_number":514,"context_line":"        self.send_instance_updates \u003d ("}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_e33965d8","line":511,"range":{"start_line":511,"start_character":37,"end_line":511,"end_character":52},"in_reply_to":"7faddb67_f59da257","updated":"2019-07-22 13:09:29.000000000","message":"IMO making test fallout smaller is not a good reason to put a proxy class in place. That\u0027s taking \"test-driven development\" too far :P","commit_id":"10d66947d359657814500cedd039c2e9e60625c3"},{"author":{"_account_id":28100,"name":"Martin Midolesov","email":"mmidolesov@vmware.com","username":"martinmidolesov"},"change_message_id":"702d60706889cb83bbc914b517fc1285c942e17e","unresolved":false,"context_lines":[{"line_number":508,"context_line":"        self.instance_events \u003d InstanceEvents()"},{"line_number":509,"context_line":"        self._sync_power_pool \u003d eventlet.GreenPool("},{"line_number":510,"context_line":"            size\u003dCONF.sync_power_state_pool_size)"},{"line_number":511,"context_line":"        self.instance_running_pool \u003d utils.PoolProxy(eventlet.GreenPool("},{"line_number":512,"context_line":"            size\u003dCONF.instance_spawning_pool_size))"},{"line_number":513,"context_line":"        self._syncs_in_progress \u003d {}"},{"line_number":514,"context_line":"        self.send_instance_updates \u003d ("}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_f59da257","line":511,"range":{"start_line":511,"start_character":37,"end_line":511,"end_character":52},"in_reply_to":"7faddb67_fa57dc56","updated":"2019-07-22 08:16:02.000000000","message":"Because otherwise we end up with a lot of broken unit/functional tests - that way we can make use of SpawnIsSynchronousFixture and proxy the calls to spawn_n and return _FakeGreenThread. And since we are using the pool in build_and_run_instance a lot of tests are broken.","commit_id":"10d66947d359657814500cedd039c2e9e60625c3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e581d5e698fc2c43d82dd4ab57e208abe8a0e4d2","unresolved":false,"context_lines":[{"line_number":508,"context_line":"        self.instance_events \u003d InstanceEvents()"},{"line_number":509,"context_line":"        self._sync_power_pool \u003d eventlet.GreenPool("},{"line_number":510,"context_line":"            size\u003dCONF.sync_power_state_pool_size)"},{"line_number":511,"context_line":"        self.instance_running_pool \u003d utils.PoolProxy(eventlet.GreenPool("},{"line_number":512,"context_line":"            size\u003dCONF.instance_spawning_pool_size))"},{"line_number":513,"context_line":"        self._syncs_in_progress \u003d {}"},{"line_number":514,"context_line":"        self.send_instance_updates \u003d ("}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_59185374","line":511,"range":{"start_line":511,"start_character":37,"end_line":511,"end_character":52},"in_reply_to":"7faddb67_fb190222","updated":"2019-07-23 18:53:25.000000000","message":"Okay, thanks for the explanation, I understand the need to be able to mock this pool independently of others.\n\nI suspected the whole PoolProxy class was overkill, though, so I tried this [1], which seems to work fine. Feel free to smash that in here (though you should rename it InstanceRunningPool or similar, because it\u0027s no longer a proxy; and include a docstring describing why it\u0027s needed).\n\n[1] https://review.opendev.org/#/c/672299/","commit_id":"10d66947d359657814500cedd039c2e9e60625c3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b257a2d7df38ad030bd530a04aa5484cf7f705b2","unresolved":false,"context_lines":[{"line_number":1286,"context_line":"                self._update_scheduler_instance_info(context, instances)"},{"line_number":1287,"context_line":""},{"line_number":1288,"context_line":"    def cleanup_host(self):"},{"line_number":1289,"context_line":"        if self.instance_running_pool.running() \u003e 0:"},{"line_number":1290,"context_line":"            self.instance_running_pool.waitall()"},{"line_number":1291,"context_line":"        self.driver.register_event_listener(None)"},{"line_number":1292,"context_line":"        self.instance_events.cancel_all_events()"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_148fa475","line":1289,"updated":"2019-09-23 20:17:03.000000000","message":"You have no testing for this, I could remove it and nothing would fail.","commit_id":"4a1e52de35f3e1775c3530200fe978e4fff165e5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4aebd247b5bb94f1fa728a902c35010439b13c32","unresolved":false,"context_lines":[{"line_number":1287,"context_line":""},{"line_number":1288,"context_line":"    def cleanup_host(self):"},{"line_number":1289,"context_line":"        \"\"\"When gracefully shutting down the service - check for running"},{"line_number":1290,"context_line":"        threads - if any, then wait for them to finish. The service will wait"},{"line_number":1291,"context_line":"        until `graceful_shutdown_timeout` is reached."},{"line_number":1292,"context_line":"        \"\"\""},{"line_number":1293,"context_line":"        if self.instance_running_pool.running() \u003e 0:"},{"line_number":1294,"context_line":"            self.instance_running_pool.waitall()"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_0c383f3a","line":1291,"range":{"start_line":1290,"start_character":56,"end_line":1291,"end_character":53},"updated":"2020-02-04 10:47:25.000000000","message":"Where this graceful_shutdown_timeout is defined? Can I configure it in nova?","commit_id":"384424da994b10f26df7d68ea9d955cdb2b8b5fc"},{"author":{"_account_id":28100,"name":"Martin Midolesov","email":"mmidolesov@vmware.com","username":"martinmidolesov"},"change_message_id":"cbc4195f27c4ffa90ff749e22102141aedd22d73","unresolved":false,"context_lines":[{"line_number":1287,"context_line":""},{"line_number":1288,"context_line":"    def cleanup_host(self):"},{"line_number":1289,"context_line":"        \"\"\"When gracefully shutting down the service - check for running"},{"line_number":1290,"context_line":"        threads - if any, then wait for them to finish. The service will wait"},{"line_number":1291,"context_line":"        until `graceful_shutdown_timeout` is reached."},{"line_number":1292,"context_line":"        \"\"\""},{"line_number":1293,"context_line":"        if self.instance_running_pool.running() \u003e 0:"},{"line_number":1294,"context_line":"            self.instance_running_pool.waitall()"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_5b77c78f","line":1291,"range":{"start_line":1290,"start_character":56,"end_line":1291,"end_character":53},"in_reply_to":"3fa7e38b_0c383f3a","updated":"2020-02-06 13:09:06.000000000","message":"This is described in the commit message and yes you can.","commit_id":"384424da994b10f26df7d68ea9d955cdb2b8b5fc"},{"author":{"_account_id":28100,"name":"Martin Midolesov","email":"mmidolesov@vmware.com","username":"martinmidolesov"},"change_message_id":"29f0e44e14b459aca78001abb607f6d24e2a9289","unresolved":false,"context_lines":[{"line_number":1287,"context_line":""},{"line_number":1288,"context_line":"    def cleanup_host(self):"},{"line_number":1289,"context_line":"        \"\"\"When gracefully shutting down the service - check for running"},{"line_number":1290,"context_line":"        threads - if any, then wait for them to finish. The service will wait"},{"line_number":1291,"context_line":"        until `graceful_shutdown_timeout` is reached."},{"line_number":1292,"context_line":"        \"\"\""},{"line_number":1293,"context_line":"        if self.instance_running_pool.running() \u003e 0:"},{"line_number":1294,"context_line":"            self.instance_running_pool.waitall()"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_176ec664","line":1291,"range":{"start_line":1290,"start_character":56,"end_line":1291,"end_character":53},"in_reply_to":"3fa7e38b_4e66ee58","updated":"2020-02-07 15:06:09.000000000","message":"Yes","commit_id":"384424da994b10f26df7d68ea9d955cdb2b8b5fc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"120c9486a2a881fad83399bddcd3dda2c984c01a","unresolved":false,"context_lines":[{"line_number":1287,"context_line":""},{"line_number":1288,"context_line":"    def cleanup_host(self):"},{"line_number":1289,"context_line":"        \"\"\"When gracefully shutting down the service - check for running"},{"line_number":1290,"context_line":"        threads - if any, then wait for them to finish. The service will wait"},{"line_number":1291,"context_line":"        until `graceful_shutdown_timeout` is reached."},{"line_number":1292,"context_line":"        \"\"\""},{"line_number":1293,"context_line":"        if self.instance_running_pool.running() \u003e 0:"},{"line_number":1294,"context_line":"            self.instance_running_pool.waitall()"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_4e66ee58","line":1291,"range":{"start_line":1290,"start_character":56,"end_line":1291,"end_character":53},"in_reply_to":"3fa7e38b_5b77c78f","updated":"2020-02-07 13:38:35.000000000","message":"You mean oslo services\u0027 graceful_shutdown_timeout config?\n\nhttps://docs.openstack.org/oslo.service/latest/configuration/index.html#DEFAULT.graceful_shutdown_timeout","commit_id":"384424da994b10f26df7d68ea9d955cdb2b8b5fc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"120c9486a2a881fad83399bddcd3dda2c984c01a","unresolved":false,"context_lines":[{"line_number":1508,"context_line":"    def cleanup_host(self):"},{"line_number":1509,"context_line":"        \"\"\"When gracefully shutting down the service - check for running"},{"line_number":1510,"context_line":"        threads - if any, then wait for them to finish. The service will wait"},{"line_number":1511,"context_line":"        until `graceful_shutdown_timeout` is reached."},{"line_number":1512,"context_line":"        \"\"\""},{"line_number":1513,"context_line":"        if self.instance_running_pool.running() \u003e 0:"},{"line_number":1514,"context_line":"            self.instance_running_pool.waitall()"}],"source_content_type":"text/x-python","patch_set":15,"id":"3fa7e38b_0e8c76d6","line":1511,"range":{"start_line":1511,"start_character":8,"end_line":1511,"end_character":53},"updated":"2020-02-07 13:38:35.000000000","message":"until oslo.services `graceful_shutdown_timeout` is reached","commit_id":"c1429569ba97f499b5afad34c54904846eefcdd7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a549263607643f8eeb8971d849e835d2ab3c183e","unresolved":false,"context_lines":[{"line_number":580,"context_line":"        self._sync_power_pool \u003d eventlet.GreenPool("},{"line_number":581,"context_line":"            size\u003dCONF.sync_power_state_pool_size)"},{"line_number":582,"context_line":"        self.instance_running_pool \u003d utils.InstanceRunningPool("},{"line_number":583,"context_line":"            size\u003dCONF.instance_spawning_pool_size)"},{"line_number":584,"context_line":"        self._syncs_in_progress \u003d {}"},{"line_number":585,"context_line":"        self.send_instance_updates \u003d ("},{"line_number":586,"context_line":"            CONF.filter_scheduler.track_instance_changes)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1fa4df85_da480c2e","line":583,"updated":"2020-03-06 16:42:07.000000000","message":"So, this limits the number of parallel builds that can start so that we can watch them and wait...","commit_id":"4b1e6da6e9a02b199964a863ac456b02d49e25a1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a549263607643f8eeb8971d849e835d2ab3c183e","unresolved":false,"context_lines":[{"line_number":586,"context_line":"            CONF.filter_scheduler.track_instance_changes)"},{"line_number":587,"context_line":"        if CONF.max_concurrent_builds !\u003d 0:"},{"line_number":588,"context_line":"            self._build_semaphore \u003d eventlet.semaphore.Semaphore("},{"line_number":589,"context_line":"                CONF.max_concurrent_builds)"},{"line_number":590,"context_line":"        else:"},{"line_number":591,"context_line":"            self._build_semaphore \u003d compute_utils.UnlimitedSemaphore()"},{"line_number":592,"context_line":"        if CONF.max_concurrent_live_migrations \u003e 0:"}],"source_content_type":"text/x-python","patch_set":16,"id":"1fa4df85_3a6360b4","line":589,"updated":"2020-03-06 16:42:07.000000000","message":"However, this was added to do half of that... Limit the number of parallel builds. With the config you\u0027ve added, the two now interact with each other. Further, the semaphore isn\u0027t really needed at all if we bound the number by a dedicated pool. So perhaps we should remove the semaphore, replace it with the pool, and initialize the pool size from the existing max_concurrent_builds config to avoid people having to change their configs and/or know about both?","commit_id":"4b1e6da6e9a02b199964a863ac456b02d49e25a1"},{"author":{"_account_id":29125,"name":"Ivaylo Mitev","email":"imitev@vmware.com","username":"imitev"},"change_message_id":"e86370dfd72a21de3d3b3a6dc110d54a339ba94b","unresolved":false,"context_lines":[{"line_number":586,"context_line":"            CONF.filter_scheduler.track_instance_changes)"},{"line_number":587,"context_line":"        if CONF.max_concurrent_builds !\u003d 0:"},{"line_number":588,"context_line":"            self._build_semaphore \u003d eventlet.semaphore.Semaphore("},{"line_number":589,"context_line":"                CONF.max_concurrent_builds)"},{"line_number":590,"context_line":"        else:"},{"line_number":591,"context_line":"            self._build_semaphore \u003d compute_utils.UnlimitedSemaphore()"},{"line_number":592,"context_line":"        if CONF.max_concurrent_live_migrations \u003e 0:"}],"source_content_type":"text/x-python","patch_set":16,"id":"ff2e2bb8_c23ae2cb","line":589,"in_reply_to":"1fa4df85_3a6360b4","updated":"2020-03-20 14:24:52.000000000","message":"If this route is taken the wait would happen without the instance being locked. Wouldn\u0027t that be an issue?\nAs per your comment in _locked_do_build_and_run_instance:\n# NOTE(danms): We grab the semaphore with the instance uuid\n# locked because we could wait in line to build this instance\n# for a while and we want to make sure that nothing else tries\n# to do anything with this instance while we wait.","commit_id":"4b1e6da6e9a02b199964a863ac456b02d49e25a1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8ba855107700a39a70c7d5e52ebd66310c00e705","unresolved":false,"context_lines":[{"line_number":586,"context_line":"            CONF.filter_scheduler.track_instance_changes)"},{"line_number":587,"context_line":"        if CONF.max_concurrent_builds !\u003d 0:"},{"line_number":588,"context_line":"            self._build_semaphore \u003d eventlet.semaphore.Semaphore("},{"line_number":589,"context_line":"                CONF.max_concurrent_builds)"},{"line_number":590,"context_line":"        else:"},{"line_number":591,"context_line":"            self._build_semaphore \u003d compute_utils.UnlimitedSemaphore()"},{"line_number":592,"context_line":"        if CONF.max_concurrent_live_migrations \u003e 0:"}],"source_content_type":"text/x-python","patch_set":16,"id":"df33271e_fae16400","line":589,"in_reply_to":"ff2e2bb8_c23ae2cb","updated":"2020-03-24 13:57:46.000000000","message":"I\u0027m not sure what your point is... we can still grab the lock before grabbing a worker from your pool...","commit_id":"4b1e6da6e9a02b199964a863ac456b02d49e25a1"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"a133ce05aa0cfa321bc0351b1b68aed9db40f254","unresolved":false,"context_lines":[{"line_number":1510,"context_line":"        until oslo.service `graceful_shutdown_timeout` is reached."},{"line_number":1511,"context_line":"        \"\"\""},{"line_number":1512,"context_line":"        if self.instance_running_pool.running() \u003e 0:"},{"line_number":1513,"context_line":"            self.instance_running_pool.waitall()"},{"line_number":1514,"context_line":"        self.driver.register_event_listener(None)"},{"line_number":1515,"context_line":"        self.instance_events.cancel_all_events()"},{"line_number":1516,"context_line":"        self.driver.cleanup_host(host\u003dself.host)"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff570b3c_bd14aea1","line":1513,"updated":"2020-05-15 10:53:41.000000000","message":"I wonder how this works as cleanup_host goes after rpcserver.stop() and by default instance requires network-instance-plugged event via RPC. Could you explain this a bit?","commit_id":"94eb307ec08b7dcb20eab6dd4c85a336c6b1b4ee"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"a133ce05aa0cfa321bc0351b1b68aed9db40f254","unresolved":false,"context_lines":[{"line_number":2085,"context_line":""},{"line_number":2086,"context_line":"        @utils.synchronized(instance.uuid)"},{"line_number":2087,"context_line":"        def _locked_do_build_and_run_instance(*args, **kwargs):"},{"line_number":2088,"context_line":"            try:"},{"line_number":2089,"context_line":"                result \u003d self._do_build_and_run_instance(*args, **kwargs)"},{"line_number":2090,"context_line":"            except Exception:"},{"line_number":2091,"context_line":"                # NOTE(mriedem): This should really only happen if"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff570b3c_fd83c6ca","line":2088,"range":{"start_line":2088,"start_character":12,"end_line":2088,"end_character":15},"updated":"2020-05-15 10:53:41.000000000","message":"Not sure build_semaphore should go away if RPC is open see my prev comment.","commit_id":"94eb307ec08b7dcb20eab6dd4c85a336c6b1b4ee"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"602d98dab3b873f20dd0b0151b5ac26265170e3d","unresolved":false,"context_lines":[{"line_number":2085,"context_line":""},{"line_number":2086,"context_line":"        @utils.synchronized(instance.uuid)"},{"line_number":2087,"context_line":"        def _locked_do_build_and_run_instance(*args, **kwargs):"},{"line_number":2088,"context_line":"            try:"},{"line_number":2089,"context_line":"                result \u003d self._do_build_and_run_instance(*args, **kwargs)"},{"line_number":2090,"context_line":"            except Exception:"},{"line_number":2091,"context_line":"                # NOTE(mriedem): This should really only happen if"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff570b3c_1aa93923","line":2088,"range":{"start_line":2088,"start_character":12,"end_line":2088,"end_character":15},"in_reply_to":"ff570b3c_380eec3a","updated":"2020-05-18 12:53:17.000000000","message":"Ok, maybe pool with a conf option is enough.","commit_id":"94eb307ec08b7dcb20eab6dd4c85a336c6b1b4ee"},{"author":{"_account_id":29125,"name":"Ivaylo Mitev","email":"imitev@vmware.com","username":"imitev"},"change_message_id":"8e5a0d67cb71e26298d2bfd7a3ca2e37b153832d","unresolved":false,"context_lines":[{"line_number":2085,"context_line":""},{"line_number":2086,"context_line":"        @utils.synchronized(instance.uuid)"},{"line_number":2087,"context_line":"        def _locked_do_build_and_run_instance(*args, **kwargs):"},{"line_number":2088,"context_line":"            try:"},{"line_number":2089,"context_line":"                result \u003d self._do_build_and_run_instance(*args, **kwargs)"},{"line_number":2090,"context_line":"            except Exception:"},{"line_number":2091,"context_line":"                # NOTE(mriedem): This should really only happen if"}],"source_content_type":"text/x-python","patch_set":19,"id":"ff570b3c_380eec3a","line":2088,"range":{"start_line":2088,"start_character":12,"end_line":2088,"end_character":15},"in_reply_to":"ff570b3c_fd83c6ca","updated":"2020-05-18 12:17:34.000000000","message":"I\u0027ve removed it following to this discussion: https://review.opendev.org/#/c/666245/16/nova/compute/manager.py@589","commit_id":"94eb307ec08b7dcb20eab6dd4c85a336c6b1b4ee"}],"nova/conf/compute.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5a2dc26749773f049b790961945f5f6683d906eb","unresolved":false,"context_lines":[{"line_number":1190,"context_line":""},{"line_number":1191,"context_line":"* A positive integer or 0 (default value is 60)."},{"line_number":1192,"context_line":"\"\"\"),"},{"line_number":1193,"context_line":"    cfg.IntOpt(\u0027graceful_shutdown_timeout\u0027,"},{"line_number":1194,"context_line":"        default\u003d900,"},{"line_number":1195,"context_line":"        help\u003d\"\"\""},{"line_number":1196,"context_line":"Specify a timeout after which a gracefully shutdown"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_d399b31e","line":1193,"updated":"2019-07-01 14:40:09.000000000","message":"This isn\u0027t even used.","commit_id":"23f4d637d3663fc12dbd67aff4615e2a9c5f5a7c"},{"author":{"_account_id":28100,"name":"Martin Midolesov","email":"mmidolesov@vmware.com","username":"martinmidolesov"},"change_message_id":"f7452155836d4d441d7d107f51383dacc18eb121","unresolved":false,"context_lines":[{"line_number":1190,"context_line":""},{"line_number":1191,"context_line":"* A positive integer or 0 (default value is 60)."},{"line_number":1192,"context_line":"\"\"\"),"},{"line_number":1193,"context_line":"    cfg.IntOpt(\u0027graceful_shutdown_timeout\u0027,"},{"line_number":1194,"context_line":"        default\u003d900,"},{"line_number":1195,"context_line":"        help\u003d\"\"\""},{"line_number":1196,"context_line":"Specify a timeout after which a gracefully shutdown"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_590e388c","line":1193,"in_reply_to":"9fb8cfa7_b3bf5f5f","updated":"2019-07-02 07:36:45.000000000","message":"Yes, so I had a comment that we can only set this for the compute - so my initial idea was putting this in nova.conf as a config option","commit_id":"23f4d637d3663fc12dbd67aff4615e2a9c5f5a7c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"02e6b544673537de159bc1151f8b81a550c5306c","unresolved":false,"context_lines":[{"line_number":1190,"context_line":""},{"line_number":1191,"context_line":"* A positive integer or 0 (default value is 60)."},{"line_number":1192,"context_line":"\"\"\"),"},{"line_number":1193,"context_line":"    cfg.IntOpt(\u0027graceful_shutdown_timeout\u0027,"},{"line_number":1194,"context_line":"        default\u003d900,"},{"line_number":1195,"context_line":"        help\u003d\"\"\""},{"line_number":1196,"context_line":"Specify a timeout after which a gracefully shutdown"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_b3bf5f5f","line":1193,"in_reply_to":"9fb8cfa7_d399b31e","updated":"2019-07-01 14:41:30.000000000","message":"Umm, so this is an oslo.service option?\n\nhttps://review.opendev.org/#/c/666302/\n\nSeems the commit message should call out the related oslo.service change (which has -1s from oslo cores on it).","commit_id":"23f4d637d3663fc12dbd67aff4615e2a9c5f5a7c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5a2dc26749773f049b790961945f5f6683d906eb","unresolved":false,"context_lines":[{"line_number":1194,"context_line":"        default\u003d900,"},{"line_number":1195,"context_line":"        help\u003d\"\"\""},{"line_number":1196,"context_line":"Specify a timeout after which a gracefully shutdown"},{"line_number":1197,"context_line":"server will exit. Zero value means endless wait."},{"line_number":1198,"context_line":"\"\"\")"},{"line_number":1199,"context_line":"]"},{"line_number":1200,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_13f66b5e","line":1197,"range":{"start_line":1197,"start_character":18,"end_line":1197,"end_character":48},"updated":"2019-07-01 14:40:09.000000000","message":"Shouldn\u0027t the option have min\u003d0 then? What would -1 mean in this case? Never timeout?","commit_id":"23f4d637d3663fc12dbd67aff4615e2a9c5f5a7c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"891908810025deed66f63bd56da9d8beb3a2fabf","unresolved":false,"context_lines":[{"line_number":684,"context_line":"Possible values:"},{"line_number":685,"context_line":""},{"line_number":686,"context_line":"* Any positive integer representing greenthreads count."},{"line_number":687,"context_line":"\"\"\"),"},{"line_number":688,"context_line":"    cfg.IntOpt(\u0027instance_spawning_pool_size\u0027,"},{"line_number":689,"context_line":"        default\u003d30,"},{"line_number":690,"context_line":"        min\u003d1,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_ecfe0d6a","line":687,"updated":"2019-07-24 13:56:28.000000000","message":"(unrelated) I wonder why these thread pool size options are in [DEFAULT] rather than [compute]","commit_id":"e4f55768173477deeb8f04ea4469ce6fa3090826"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1b10d53f612be783d65c775464462c9bb8ab2b81","unresolved":false,"context_lines":[{"line_number":681,"context_line":"    cfg.IntOpt(\u0027instance_spawning_pool_size\u0027,"},{"line_number":682,"context_line":"        default\u003d30,"},{"line_number":683,"context_line":"        min\u003d1,"},{"line_number":684,"context_line":"        help\u003d\"\"\""},{"line_number":685,"context_line":"Number of greenthreads available for spawning virtual machines."},{"line_number":686,"context_line":"Possible values:"},{"line_number":687,"context_line":"* Any positive integer representing greenthreads count."}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_746858b8","line":684,"updated":"2019-09-23 20:16:13.000000000","message":"How does this option relate to the max_concurrent_builds option? The help text should explain that because max_concurrent_builds defaults to 10 and this defaults to a random 30.\n\nWhat are the side effects of setting this too low or too high? Should this be considered for different compute drivers, i.e. would anyone besides ironic or vcenter driver users ever need to configure this to a high number? And if the number is too high, what could happen? One side effect would be if you\u0027re using the vCenter driver and have this set to 1000 to accommodate the nova-compute service managing an entire cluster, then trying to stop the service could take a long time. Will systemd eventually timeout?","commit_id":"4a1e52de35f3e1775c3530200fe978e4fff165e5"},{"author":{"_account_id":28100,"name":"Martin Midolesov","email":"mmidolesov@vmware.com","username":"martinmidolesov"},"change_message_id":"e3272ff194ca88ee7fe773006ec3674f1e77ad52","unresolved":false,"context_lines":[{"line_number":681,"context_line":"    cfg.IntOpt(\u0027instance_spawning_pool_size\u0027,"},{"line_number":682,"context_line":"        default\u003d30,"},{"line_number":683,"context_line":"        min\u003d1,"},{"line_number":684,"context_line":"        help\u003d\"\"\""},{"line_number":685,"context_line":"Number of greenthreads available for spawning virtual machines."},{"line_number":686,"context_line":"Possible values:"},{"line_number":687,"context_line":"* Any positive integer representing greenthreads count."}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_055df077","line":684,"in_reply_to":"3fa7e38b_145244df","updated":"2019-10-14 11:11:38.000000000","message":"After the timeout all threads are killed.","commit_id":"4a1e52de35f3e1775c3530200fe978e4fff165e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c7aee0818386b82aaaca67bc880367b466e7eabc","unresolved":false,"context_lines":[{"line_number":681,"context_line":"    cfg.IntOpt(\u0027instance_spawning_pool_size\u0027,"},{"line_number":682,"context_line":"        default\u003d30,"},{"line_number":683,"context_line":"        min\u003d1,"},{"line_number":684,"context_line":"        help\u003d\"\"\""},{"line_number":685,"context_line":"Number of greenthreads available for spawning virtual machines."},{"line_number":686,"context_line":"Possible values:"},{"line_number":687,"context_line":"* Any positive integer representing greenthreads count."}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_145244df","line":684,"in_reply_to":"3fa7e38b_746858b8","updated":"2019-09-23 20:24:16.000000000","message":"Similarly, how does this related to the graceful_shutdown_timeout option which defaults to 60 seconds? If instance_spawning_pool_size is set to 1000 and graceful_shutdown_timeout isn\u0027t changed to accommodate that, what happens on stop of the service? Does it timeout and blow up anyway? Does the greenthread get killed?","commit_id":"4a1e52de35f3e1775c3530200fe978e4fff165e5"},{"author":{"_account_id":28100,"name":"Martin Midolesov","email":"mmidolesov@vmware.com","username":"martinmidolesov"},"change_message_id":"bfca2683acf851378dd35baa4d6d1f150f126586","unresolved":false,"context_lines":[{"line_number":681,"context_line":"    cfg.IntOpt(\u0027instance_spawning_pool_size\u0027,"},{"line_number":682,"context_line":"        default\u003d30,"},{"line_number":683,"context_line":"        min\u003d1,"},{"line_number":684,"context_line":"        help\u003d\"\"\""},{"line_number":685,"context_line":"Number of greenthreads available for spawning virtual machines."},{"line_number":686,"context_line":"Possible values:"},{"line_number":687,"context_line":"* Any positive integer representing greenthreads count."}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_2e6b6b85","line":684,"in_reply_to":"3fa7e38b_746858b8","updated":"2019-09-25 15:02:58.000000000","message":"This is open for suggestion - the instance_spawning_pool_size \u003d 30. We can change to 10 if max_concurent_builds is equal to 10. I havent noticed any side effects. I am doing this for the vmware driver but should be relevant for all others - I don\u0027t see why not. This is not depending on any concrete driver implementation. Other than that I dont know if systemd will eventually force shut. The idea here is to finish all outstanding tasks.","commit_id":"4a1e52de35f3e1775c3530200fe978e4fff165e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1b10d53f612be783d65c775464462c9bb8ab2b81","unresolved":false,"context_lines":[{"line_number":683,"context_line":"        min\u003d1,"},{"line_number":684,"context_line":"        help\u003d\"\"\""},{"line_number":685,"context_line":"Number of greenthreads available for spawning virtual machines."},{"line_number":686,"context_line":"Possible values:"},{"line_number":687,"context_line":"* Any positive integer representing greenthreads count."},{"line_number":688,"context_line":"\"\"\"),"},{"line_number":689,"context_line":"]"},{"line_number":690,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_b459f035","line":687,"range":{"start_line":686,"start_character":0,"end_line":687,"end_character":55},"updated":"2019-09-23 20:16:13.000000000","message":"This list format doesn\u0027t render properly:\n\nhttps://storage.gra1.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_543/666245/11/check/openstack-tox-docs/5433c96/docs/configuration/config.html#DEFAULT.instance_spawning_pool_size\n\nSee how it\u0027s done in the option help above.","commit_id":"4a1e52de35f3e1775c3530200fe978e4fff165e5"},{"author":{"_account_id":28100,"name":"Martin Midolesov","email":"mmidolesov@vmware.com","username":"martinmidolesov"},"change_message_id":"bfca2683acf851378dd35baa4d6d1f150f126586","unresolved":false,"context_lines":[{"line_number":683,"context_line":"        min\u003d1,"},{"line_number":684,"context_line":"        help\u003d\"\"\""},{"line_number":685,"context_line":"Number of greenthreads available for spawning virtual machines."},{"line_number":686,"context_line":"Possible values:"},{"line_number":687,"context_line":"* Any positive integer representing greenthreads count."},{"line_number":688,"context_line":"\"\"\"),"},{"line_number":689,"context_line":"]"},{"line_number":690,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_6e8ac3bf","line":687,"range":{"start_line":686,"start_character":0,"end_line":687,"end_character":55},"in_reply_to":"3fa7e38b_b459f035","updated":"2019-09-25 15:02:58.000000000","message":"Ok I\u0027ll fix that","commit_id":"4a1e52de35f3e1775c3530200fe978e4fff165e5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"746ccc107014877d0fc6087043e43e4c156117a6","unresolved":false,"context_lines":[{"line_number":682,"context_line":"        default\u003d10,"},{"line_number":683,"context_line":"        min\u003d1,"},{"line_number":684,"context_line":"        help\u003d\"\"\""},{"line_number":685,"context_line":"Number of greenthreads available for spawning virtual machines."},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"Possible values:"},{"line_number":688,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_a2042b19","line":685,"updated":"2019-09-25 15:09:59.000000000","message":"You didn\u0027t address anything that I mentioned in PS11 for documenting this option. The description here doesn\u0027t really mean anything to an operator reading this - they would have to read the code to understand what effect this has, when to consider using it (lots of vms on a single host, like when using the vcenter driver), and what the consequences can be, e.g. stopping the service could take a lot longer while waiting to finish server build tasks - and that\u0027s not to mention it sounds like you haven\u0027t done testing to find out if there is eventually going to be a hard timeout from the graceful_shutdown_timeout option or systemd hard killing the service. IOW, have you done any sort of test that spawns enough VMs (or even just one and inject a sleep to make it hit this) that when stopping the service it waits at least longer than graceful_shutdown_timeout and found that things are OK?","commit_id":"965d823d1ec9aee884267b8145ecf8f0636e367f"},{"author":{"_account_id":28100,"name":"Martin Midolesov","email":"mmidolesov@vmware.com","username":"martinmidolesov"},"change_message_id":"a70b96a07393d1834a1f57f132945f76e4d8d8de","unresolved":false,"context_lines":[{"line_number":682,"context_line":"        default\u003d10,"},{"line_number":683,"context_line":"        min\u003d1,"},{"line_number":684,"context_line":"        help\u003d\"\"\""},{"line_number":685,"context_line":"Number of greenthreads available for spawning virtual machines."},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"Possible values:"},{"line_number":688,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_c5691825","line":685,"in_reply_to":"3fa7e38b_a2042b19","updated":"2019-10-14 11:10:26.000000000","message":"After the timeout all tasks are stopping and the threads are killed. So it all depends from the timeout we set. So if I have 90 machines spawning - the service is going to let the outstanding tasks go for as long as the timeout duration is. After restart of the service the tasks which are not done enter in error state.","commit_id":"965d823d1ec9aee884267b8145ecf8f0636e367f"},{"author":{"_account_id":28100,"name":"Martin Midolesov","email":"mmidolesov@vmware.com","username":"martinmidolesov"},"change_message_id":"5d8c851fda80da8405be0114190e8928a98a481f","unresolved":false,"context_lines":[{"line_number":682,"context_line":"        default\u003d10,"},{"line_number":683,"context_line":"        min\u003d1,"},{"line_number":684,"context_line":"        help\u003d\"\"\""},{"line_number":685,"context_line":"Number of greenthreads available for spawning virtual machines."},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"Possible values:"},{"line_number":688,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_75310b5a","line":685,"in_reply_to":"3fa7e38b_a2042b19","updated":"2019-09-25 15:27:11.000000000","message":"I did test the functionality, maybe not in the scale you want it - I will try to do more tests and document this better.","commit_id":"965d823d1ec9aee884267b8145ecf8f0636e367f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4aebd247b5bb94f1fa728a902c35010439b13c32","unresolved":false,"context_lines":[{"line_number":685,"context_line":"Number of greenthreads available for spawning virtual machines."},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"This option is used to set the number of greenthreads available in the"},{"line_number":688,"context_line":"eventlet.GreenPool for spawning instances. After nova compute is gracefully"},{"line_number":689,"context_line":"shutdown `cleanup_host` in compute/manager.py will check for all running"},{"line_number":690,"context_line":"threads in the pool and will wait for the threads to finish if the"},{"line_number":691,"context_line":"`graceful_shutdown_timeout` isn\u0027t reached. If the timeout is reached all"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_ac8b2b14","line":688,"range":{"start_line":688,"start_character":43,"end_line":688,"end_character":48},"updated":"2020-02-04 10:47:25.000000000","message":"When","commit_id":"384424da994b10f26df7d68ea9d955cdb2b8b5fc"},{"author":{"_account_id":28100,"name":"Martin Midolesov","email":"mmidolesov@vmware.com","username":"martinmidolesov"},"change_message_id":"cbc4195f27c4ffa90ff749e22102141aedd22d73","unresolved":false,"context_lines":[{"line_number":685,"context_line":"Number of greenthreads available for spawning virtual machines."},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"This option is used to set the number of greenthreads available in the"},{"line_number":688,"context_line":"eventlet.GreenPool for spawning instances. After nova compute is gracefully"},{"line_number":689,"context_line":"shutdown `cleanup_host` in compute/manager.py will check for all running"},{"line_number":690,"context_line":"threads in the pool and will wait for the threads to finish if the"},{"line_number":691,"context_line":"`graceful_shutdown_timeout` isn\u0027t reached. If the timeout is reached all"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_fbac73ec","line":688,"range":{"start_line":688,"start_character":43,"end_line":688,"end_character":48},"in_reply_to":"3fa7e38b_ac8b2b14","updated":"2020-02-06 13:09:06.000000000","message":"Why?","commit_id":"384424da994b10f26df7d68ea9d955cdb2b8b5fc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"120c9486a2a881fad83399bddcd3dda2c984c01a","unresolved":false,"context_lines":[{"line_number":685,"context_line":"Number of greenthreads available for spawning virtual machines."},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"This option is used to set the number of greenthreads available in the"},{"line_number":688,"context_line":"eventlet.GreenPool for spawning instances. After nova compute is gracefully"},{"line_number":689,"context_line":"shutdown `cleanup_host` in compute/manager.py will check for all running"},{"line_number":690,"context_line":"threads in the pool and will wait for the threads to finish if the"},{"line_number":691,"context_line":"`graceful_shutdown_timeout` isn\u0027t reached. If the timeout is reached all"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_cec09efc","line":688,"range":{"start_line":688,"start_character":43,"end_line":688,"end_character":48},"in_reply_to":"3fa7e38b_fbac73ec","updated":"2020-02-07 13:38:35.000000000","message":"For me \"After nova compute is gracefully shutdown\" means that we are done with the shutdown. So at that point it is not logical to start waiting for things to finish. But I\u0027m not native English so I will defer to another core here.","commit_id":"384424da994b10f26df7d68ea9d955cdb2b8b5fc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4aebd247b5bb94f1fa728a902c35010439b13c32","unresolved":false,"context_lines":[{"line_number":689,"context_line":"shutdown `cleanup_host` in compute/manager.py will check for all running"},{"line_number":690,"context_line":"threads in the pool and will wait for the threads to finish if the"},{"line_number":691,"context_line":"`graceful_shutdown_timeout` isn\u0027t reached. If the timeout is reached all"},{"line_number":692,"context_line":"threads are killed by systemd and all unfinished tasks enter ERROR state"},{"line_number":693,"context_line":"after the service is down."},{"line_number":694,"context_line":""},{"line_number":695,"context_line":"Possible values:"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_8c88af1a","line":692,"range":{"start_line":692,"start_character":22,"end_line":692,"end_character":29},"updated":"2020-02-04 10:47:25.000000000","message":"It is deployment specific if nova runs under systemd or other init system so you cannot depend on systemd\u0027s behavior in nova.","commit_id":"384424da994b10f26df7d68ea9d955cdb2b8b5fc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4aebd247b5bb94f1fa728a902c35010439b13c32","unresolved":false,"context_lines":[{"line_number":689,"context_line":"shutdown `cleanup_host` in compute/manager.py will check for all running"},{"line_number":690,"context_line":"threads in the pool and will wait for the threads to finish if the"},{"line_number":691,"context_line":"`graceful_shutdown_timeout` isn\u0027t reached. If the timeout is reached all"},{"line_number":692,"context_line":"threads are killed by systemd and all unfinished tasks enter ERROR state"},{"line_number":693,"context_line":"after the service is down."},{"line_number":694,"context_line":""},{"line_number":695,"context_line":"Possible values:"},{"line_number":696,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_4cab9770","line":693,"range":{"start_line":692,"start_character":34,"end_line":693,"end_character":26},"updated":"2020-02-04 10:47:25.000000000","message":"you mean servers?","commit_id":"384424da994b10f26df7d68ea9d955cdb2b8b5fc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"120c9486a2a881fad83399bddcd3dda2c984c01a","unresolved":false,"context_lines":[{"line_number":689,"context_line":"shutdown `cleanup_host` in compute/manager.py will check for all running"},{"line_number":690,"context_line":"threads in the pool and will wait for the threads to finish if the"},{"line_number":691,"context_line":"`graceful_shutdown_timeout` isn\u0027t reached. If the timeout is reached all"},{"line_number":692,"context_line":"threads are killed by systemd and all unfinished tasks enter ERROR state"},{"line_number":693,"context_line":"after the service is down."},{"line_number":694,"context_line":""},{"line_number":695,"context_line":"Possible values:"},{"line_number":696,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_8ecaa616","line":693,"range":{"start_line":692,"start_character":34,"end_line":693,"end_character":26},"in_reply_to":"3fa7e38b_3ba3ebff","updated":"2020-02-07 13:38:35.000000000","message":"Then I don\u0027t know what is the \u0027tasks\u0027 that will enter into ERROR state here.","commit_id":"384424da994b10f26df7d68ea9d955cdb2b8b5fc"},{"author":{"_account_id":28100,"name":"Martin Midolesov","email":"mmidolesov@vmware.com","username":"martinmidolesov"},"change_message_id":"cbc4195f27c4ffa90ff749e22102141aedd22d73","unresolved":false,"context_lines":[{"line_number":689,"context_line":"shutdown `cleanup_host` in compute/manager.py will check for all running"},{"line_number":690,"context_line":"threads in the pool and will wait for the threads to finish if the"},{"line_number":691,"context_line":"`graceful_shutdown_timeout` isn\u0027t reached. If the timeout is reached all"},{"line_number":692,"context_line":"threads are killed by systemd and all unfinished tasks enter ERROR state"},{"line_number":693,"context_line":"after the service is down."},{"line_number":694,"context_line":""},{"line_number":695,"context_line":"Possible values:"},{"line_number":696,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_3ba3ebff","line":693,"range":{"start_line":692,"start_character":34,"end_line":693,"end_character":26},"in_reply_to":"3fa7e38b_4cab9770","updated":"2020-02-06 13:09:06.000000000","message":"I mean service.","commit_id":"384424da994b10f26df7d68ea9d955cdb2b8b5fc"},{"author":{"_account_id":28100,"name":"Martin Midolesov","email":"mmidolesov@vmware.com","username":"martinmidolesov"},"change_message_id":"29f0e44e14b459aca78001abb607f6d24e2a9289","unresolved":false,"context_lines":[{"line_number":689,"context_line":"shutdown `cleanup_host` in compute/manager.py will check for all running"},{"line_number":690,"context_line":"threads in the pool and will wait for the threads to finish if the"},{"line_number":691,"context_line":"`graceful_shutdown_timeout` isn\u0027t reached. If the timeout is reached all"},{"line_number":692,"context_line":"threads are killed by systemd and all unfinished tasks enter ERROR state"},{"line_number":693,"context_line":"after the service is down."},{"line_number":694,"context_line":""},{"line_number":695,"context_line":"Possible values:"},{"line_number":696,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_373c222c","line":693,"range":{"start_line":692,"start_character":34,"end_line":693,"end_character":26},"in_reply_to":"3fa7e38b_8ecaa616","updated":"2020-02-07 15:06:09.000000000","message":"All instances which are spawning will be in ERROR state","commit_id":"384424da994b10f26df7d68ea9d955cdb2b8b5fc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"120c9486a2a881fad83399bddcd3dda2c984c01a","unresolved":false,"context_lines":[{"line_number":715,"context_line":"shutdown `cleanup_host` in compute/manager.py will check for all running"},{"line_number":716,"context_line":"threads in the pool and will wait for the threads to finish if the"},{"line_number":717,"context_line":"`graceful_shutdown_timeout` isn\u0027t reached. If the timeout is reached all"},{"line_number":718,"context_line":"threads are killed by systemd and all unfinished tasks enter ERROR state"},{"line_number":719,"context_line":"after the service is down."},{"line_number":720,"context_line":""},{"line_number":721,"context_line":"Possible values:"}],"source_content_type":"text/x-python","patch_set":15,"id":"3fa7e38b_d447cc51","line":718,"range":{"start_line":718,"start_character":22,"end_line":718,"end_character":29},"updated":"2020-02-07 13:38:35.000000000","message":"referring to systemd still feels bad to me, nova services could very well run under other init systems.","commit_id":"c1429569ba97f499b5afad34c54904846eefcdd7"},{"author":{"_account_id":28100,"name":"Martin Midolesov","email":"mmidolesov@vmware.com","username":"martinmidolesov"},"change_message_id":"29f0e44e14b459aca78001abb607f6d24e2a9289","unresolved":false,"context_lines":[{"line_number":715,"context_line":"shutdown `cleanup_host` in compute/manager.py will check for all running"},{"line_number":716,"context_line":"threads in the pool and will wait for the threads to finish if the"},{"line_number":717,"context_line":"`graceful_shutdown_timeout` isn\u0027t reached. If the timeout is reached all"},{"line_number":718,"context_line":"threads are killed by systemd and all unfinished tasks enter ERROR state"},{"line_number":719,"context_line":"after the service is down."},{"line_number":720,"context_line":""},{"line_number":721,"context_line":"Possible values:"}],"source_content_type":"text/x-python","patch_set":15,"id":"3fa7e38b_f778caf7","line":718,"range":{"start_line":718,"start_character":22,"end_line":718,"end_character":29},"in_reply_to":"3fa7e38b_d447cc51","updated":"2020-02-07 15:06:09.000000000","message":"Ok I will remove this","commit_id":"c1429569ba97f499b5afad34c54904846eefcdd7"}],"nova/tests/fixtures.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4aebd247b5bb94f1fa728a902c35010439b13c32","unresolved":false,"context_lines":[{"line_number":1116,"context_line":"            \u0027nova.utils.spawn_n\u0027, _FakeGreenThread))"},{"line_number":1117,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":1118,"context_line":"            \u0027nova.utils.InstanceRunningPool.spawn_n\u0027, _FakeGreenThread))"},{"line_number":1119,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":1120,"context_line":"            \u0027nova.utils.spawn\u0027, _FakeGreenThread))"},{"line_number":1121,"context_line":""},{"line_number":1122,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_acc32b05","line":1119,"updated":"2020-02-04 10:47:25.000000000","message":"I don\u0027t really get why we need to mock this separately (and having a separate wrapper class) if we never refer to the separate mock.","commit_id":"384424da994b10f26df7d68ea9d955cdb2b8b5fc"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4aebd247b5bb94f1fa728a902c35010439b13c32","unresolved":false,"context_lines":[{"line_number":774,"context_line":"        # just testing whether the cleanup_host method"},{"line_number":775,"context_line":"        # when fired will invoke the underlying driver\u0027s"},{"line_number":776,"context_line":"        # equivalent method."},{"line_number":777,"context_line":""},{"line_number":778,"context_line":"        mock_miglist_get.return_value \u003d []"},{"line_number":779,"context_line":"        mock_instance_list.get_by_host.return_value \u003d []"},{"line_number":780,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_0c211ffe","side":"PARENT","line":777,"updated":"2020-02-04 10:47:25.000000000","message":"feels unrelated","commit_id":"7a18209a81539217a95ab7daad6bc67002768950"},{"author":{"_account_id":28100,"name":"Martin Midolesov","email":"mmidolesov@vmware.com","username":"martinmidolesov"},"change_message_id":"cbc4195f27c4ffa90ff749e22102141aedd22d73","unresolved":false,"context_lines":[{"line_number":774,"context_line":"        # just testing whether the cleanup_host method"},{"line_number":775,"context_line":"        # when fired will invoke the underlying driver\u0027s"},{"line_number":776,"context_line":"        # equivalent method."},{"line_number":777,"context_line":""},{"line_number":778,"context_line":"        mock_miglist_get.return_value \u003d []"},{"line_number":779,"context_line":"        mock_instance_list.get_by_host.return_value \u003d []"},{"line_number":780,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_fbb31334","side":"PARENT","line":777,"in_reply_to":"3fa7e38b_0c211ffe","updated":"2020-02-06 13:09:06.000000000","message":"Which part??? Testing if the we wait for all unfinished threads in the pool? We are waiting for all instance spawning tasks to finish before doing the cleanup - thats the core of this idea.","commit_id":"7a18209a81539217a95ab7daad6bc67002768950"},{"author":{"_account_id":28100,"name":"Martin Midolesov","email":"mmidolesov@vmware.com","username":"martinmidolesov"},"change_message_id":"29f0e44e14b459aca78001abb607f6d24e2a9289","unresolved":false,"context_lines":[{"line_number":774,"context_line":"        # just testing whether the cleanup_host method"},{"line_number":775,"context_line":"        # when fired will invoke the underlying driver\u0027s"},{"line_number":776,"context_line":"        # equivalent method."},{"line_number":777,"context_line":""},{"line_number":778,"context_line":"        mock_miglist_get.return_value \u003d []"},{"line_number":779,"context_line":"        mock_instance_list.get_by_host.return_value \u003d []"},{"line_number":780,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_97ae362f","side":"PARENT","line":777,"in_reply_to":"3fa7e38b_eb779e8d","updated":"2020-02-07 15:06:09.000000000","message":"For some reason it doesn\u0027t show this as my change...strange, but I see what you mean.","commit_id":"7a18209a81539217a95ab7daad6bc67002768950"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"120c9486a2a881fad83399bddcd3dda2c984c01a","unresolved":false,"context_lines":[{"line_number":774,"context_line":"        # just testing whether the cleanup_host method"},{"line_number":775,"context_line":"        # when fired will invoke the underlying driver\u0027s"},{"line_number":776,"context_line":"        # equivalent method."},{"line_number":777,"context_line":""},{"line_number":778,"context_line":"        mock_miglist_get.return_value \u003d []"},{"line_number":779,"context_line":"        mock_instance_list.get_by_host.return_value \u003d []"},{"line_number":780,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_eb779e8d","side":"PARENT","line":777,"in_reply_to":"3fa7e38b_fbb31334","updated":"2020-02-07 13:38:35.000000000","message":"The part I marked with my comment. ;) You removed an empty line. I consider this as unnecessary noise in the diff.","commit_id":"7a18209a81539217a95ab7daad6bc67002768950"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"fa0c76ec32cdfa4a549230de6558491d709059db","unresolved":false,"context_lines":[{"line_number":834,"context_line":"        with test.nested("},{"line_number":835,"context_line":"                mock.patch.object(self.compute, \u0027driver\u0027),"},{"line_number":836,"context_line":"                mock.patch.object(self.compute,"},{"line_number":837,"context_line":"                                  \u0027instance_running_pool\u0027))\\"},{"line_number":838,"context_line":"                as (mock_driver, mock_pool):"},{"line_number":839,"context_line":""},{"line_number":840,"context_line":"            self.compute.init_host()"}],"source_content_type":"text/x-python","patch_set":16,"id":"1fa4df85_4763e9b2","line":837,"range":{"start_line":837,"start_character":58,"end_line":837,"end_character":60},"updated":"2020-03-06 16:00:42.000000000","message":"nit: if you dragged this down a line, you wouldn\u0027t need the continuation character\n\n  with test.nested(\n      ....\n      mock.patch.object(self.compute, \u0027instance_running_pool\u0027)\n  ) as (mock_driver, mock_pool):","commit_id":"4b1e6da6e9a02b199964a863ac456b02d49e25a1"}],"nova/utils.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"094c39eefa694ac8867a1bcd2d7a9430d9fdd1eb","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    return cmd"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"class PoolProxy(object):"},{"line_number":110,"context_line":"    def __init__(self, pool):"},{"line_number":111,"context_line":"        self._pool \u003d pool"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_3a5a5482","line":109,"updated":"2019-07-19 20:10:47.000000000","message":"I\u0027m pretty confused as to why this is needed. (See other comment.)","commit_id":"10d66947d359657814500cedd039c2e9e60625c3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"891908810025deed66f63bd56da9d8beb3a2fabf","unresolved":false,"context_lines":[{"line_number":109,"context_line":"class InstanceRunningPool(eventlet.GreenPool):"},{"line_number":110,"context_line":"    \"\"\"GreenPool wrapper class"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    The puspose of this class is to be able to mock the"},{"line_number":113,"context_line":"    `spawn_n` function independently in fixtures.py so we can"},{"line_number":114,"context_line":"    get the _FakeGreenThread"},{"line_number":115,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_0c392940","line":112,"range":{"start_line":112,"start_character":8,"end_line":112,"end_character":15},"updated":"2019-07-24 13:56:28.000000000","message":"purpose","commit_id":"e4f55768173477deeb8f04ea4469ce6fa3090826"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"89a63c3888f9a1d67e809154232153dccd576f2b","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    pass"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"class RootwrapProcessHelper(object):"},{"line_number":123,"context_line":"    def trycmd(self, *cmd, **kwargs):"},{"line_number":124,"context_line":"        kwargs[\u0027root_helper\u0027] \u003d get_root_helper()"},{"line_number":125,"context_line":"        return processutils.trycmd(*cmd, **kwargs)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def execute(self, *cmd, **kwargs):"},{"line_number":128,"context_line":"        kwargs[\u0027root_helper\u0027] \u003d get_root_helper()"},{"line_number":129,"context_line":"        return processutils.execute(*cmd, **kwargs)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"class RootwrapDaemonHelper(RootwrapProcessHelper):"},{"line_number":133,"context_line":"    _clients \u003d {}"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    @synchronized(\u0027daemon-client-lock\u0027)"},{"line_number":136,"context_line":"    def _get_client(cls, rootwrap_config):"},{"line_number":137,"context_line":"        try:"},{"line_number":138,"context_line":"            return cls._clients[rootwrap_config]"},{"line_number":139,"context_line":"        except KeyError:"},{"line_number":140,"context_line":"            from oslo_rootwrap import client"},{"line_number":141,"context_line":"            new_client \u003d client.Client(["},{"line_number":142,"context_line":"                \"sudo\", \"nova-rootwrap-daemon\", rootwrap_config])"},{"line_number":143,"context_line":"            cls._clients[rootwrap_config] \u003d new_client"},{"line_number":144,"context_line":"            return new_client"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def __init__(self, rootwrap_config):"},{"line_number":147,"context_line":"        self.client \u003d self._get_client(rootwrap_config)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def trycmd(self, *args, **kwargs):"},{"line_number":150,"context_line":"        discard_warnings \u003d kwargs.pop(\u0027discard_warnings\u0027, False)"},{"line_number":151,"context_line":"        try:"},{"line_number":152,"context_line":"            out, err \u003d self.execute(*args, **kwargs)"},{"line_number":153,"context_line":"            failed \u003d False"},{"line_number":154,"context_line":"        except processutils.ProcessExecutionError as exn:"},{"line_number":155,"context_line":"            out, err \u003d \u0027\u0027, six.text_type(exn)"},{"line_number":156,"context_line":"            failed \u003d True"},{"line_number":157,"context_line":"        if not failed and discard_warnings and err:"},{"line_number":158,"context_line":"            # Handle commands that output to stderr but otherwise succeed"},{"line_number":159,"context_line":"            err \u003d \u0027\u0027"},{"line_number":160,"context_line":"        return out, err"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    def execute(self, *cmd, **kwargs):"},{"line_number":163,"context_line":"        # NOTE(dims): This method is to provide compatibility with the"},{"line_number":164,"context_line":"        # processutils.execute interface. So that calling daemon or direct"},{"line_number":165,"context_line":"        # rootwrap to honor the same set of flags in kwargs and to ensure"},{"line_number":166,"context_line":"        # that we don\u0027t regress any current behavior."},{"line_number":167,"context_line":"        cmd \u003d [str(c) for c in cmd]"},{"line_number":168,"context_line":"        loglevel \u003d kwargs.pop(\u0027loglevel\u0027, logging.DEBUG)"},{"line_number":169,"context_line":"        log_errors \u003d kwargs.pop(\u0027log_errors\u0027, None)"},{"line_number":170,"context_line":"        process_input \u003d kwargs.pop(\u0027process_input\u0027, None)"},{"line_number":171,"context_line":"        delay_on_retry \u003d kwargs.pop(\u0027delay_on_retry\u0027, True)"},{"line_number":172,"context_line":"        attempts \u003d kwargs.pop(\u0027attempts\u0027, 1)"},{"line_number":173,"context_line":"        check_exit_code \u003d kwargs.pop(\u0027check_exit_code\u0027, [0])"},{"line_number":174,"context_line":"        ignore_exit_code \u003d False"},{"line_number":175,"context_line":"        if isinstance(check_exit_code, bool):"},{"line_number":176,"context_line":"            ignore_exit_code \u003d not check_exit_code"},{"line_number":177,"context_line":"            check_exit_code \u003d [0]"},{"line_number":178,"context_line":"        elif isinstance(check_exit_code, int):"},{"line_number":179,"context_line":"            check_exit_code \u003d [check_exit_code]"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        sanitized_cmd \u003d strutils.mask_password(\u0027 \u0027.join(cmd))"},{"line_number":182,"context_line":"        LOG.info(_LI(\u0027Executing RootwrapDaemonHelper.execute \u0027"},{"line_number":183,"context_line":"                     \u0027cmd\u003d[%(cmd)r] kwargs\u003d[%(kwargs)r]\u0027),"},{"line_number":184,"context_line":"                 {\u0027cmd\u0027: sanitized_cmd, \u0027kwargs\u0027: kwargs})"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        while attempts \u003e 0:"},{"line_number":187,"context_line":"            attempts -\u003d 1"},{"line_number":188,"context_line":"            try:"},{"line_number":189,"context_line":"                start_time \u003d time.time()"},{"line_number":190,"context_line":"                LOG.log(loglevel, _(\u0027Running cmd (subprocess): %s\u0027),"},{"line_number":191,"context_line":"                        sanitized_cmd)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"                (returncode, out, err) \u003d self.client.execute("},{"line_number":194,"context_line":"                    cmd, process_input)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"                end_time \u003d time.time() - start_time"},{"line_number":197,"context_line":"                LOG.log(loglevel,"},{"line_number":198,"context_line":"                        \u0027CMD \"%(sanitized_cmd)s\" returned: %(return_code)s \u0027"},{"line_number":199,"context_line":"                        \u0027in %(end_time)0.3fs\u0027,"},{"line_number":200,"context_line":"                        {\u0027sanitized_cmd\u0027: sanitized_cmd,"},{"line_number":201,"context_line":"                         \u0027return_code\u0027: returncode,"},{"line_number":202,"context_line":"                         \u0027end_time\u0027: end_time})"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"                if not ignore_exit_code and returncode not in check_exit_code:"},{"line_number":205,"context_line":"                    out \u003d strutils.mask_password(out)"},{"line_number":206,"context_line":"                    err \u003d strutils.mask_password(err)"},{"line_number":207,"context_line":"                    raise processutils.ProcessExecutionError("},{"line_number":208,"context_line":"                        exit_code\u003dreturncode,"},{"line_number":209,"context_line":"                        stdout\u003dout,"},{"line_number":210,"context_line":"                        stderr\u003derr,"},{"line_number":211,"context_line":"                        cmd\u003dsanitized_cmd)"},{"line_number":212,"context_line":"                return (out, err)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"            except processutils.ProcessExecutionError as err:"},{"line_number":215,"context_line":"                # if we want to always log the errors or if this is"},{"line_number":216,"context_line":"                # the final attempt that failed and we want to log that."},{"line_number":217,"context_line":"                if log_errors \u003d\u003d processutils.LOG_ALL_ERRORS or ("},{"line_number":218,"context_line":"                                log_errors \u003d\u003d processutils.LOG_FINAL_ERROR and"},{"line_number":219,"context_line":"                            not attempts):"},{"line_number":220,"context_line":"                    format \u003d _(\u0027%(desc)r\\ncommand: %(cmd)r\\n\u0027"},{"line_number":221,"context_line":"                               \u0027exit code: %(code)r\\nstdout: %(stdout)r\\n\u0027"},{"line_number":222,"context_line":"                               \u0027stderr: %(stderr)r\u0027)"},{"line_number":223,"context_line":"                    LOG.log(loglevel, format, {\"desc\": err.description,"},{"line_number":224,"context_line":"                                               \"cmd\": err.cmd,"},{"line_number":225,"context_line":"                                               \"code\": err.exit_code,"},{"line_number":226,"context_line":"                                               \"stdout\": err.stdout,"},{"line_number":227,"context_line":"                                               \"stderr\": err.stderr})"},{"line_number":228,"context_line":"                if not attempts:"},{"line_number":229,"context_line":"                    LOG.log(loglevel, _(\u0027%r failed. Not Retrying.\u0027),"},{"line_number":230,"context_line":"                            sanitized_cmd)"},{"line_number":231,"context_line":"                    raise"},{"line_number":232,"context_line":"                else:"},{"line_number":233,"context_line":"                    LOG.log(loglevel, _(\u0027%r failed. Retrying.\u0027),"},{"line_number":234,"context_line":"                            sanitized_cmd)"},{"line_number":235,"context_line":"                    if delay_on_retry:"},{"line_number":236,"context_line":"                        time.sleep(random.randint(20, 200) / 100.0)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"def execute(*cmd, **kwargs):"},{"line_number":240,"context_line":"    \"\"\"Convenience wrapper around oslo\u0027s execute() method.\"\"\""},{"line_number":241,"context_line":"    if \u0027run_as_root\u0027 in kwargs and kwargs.get(\u0027run_as_root\u0027):"},{"line_number":242,"context_line":"        if CONF.use_rootwrap_daemon:"},{"line_number":243,"context_line":"            return RootwrapDaemonHelper(CONF.rootwrap_config).execute("},{"line_number":244,"context_line":"                *cmd, **kwargs)"},{"line_number":245,"context_line":"        else:"},{"line_number":246,"context_line":"            return RootwrapProcessHelper().execute(*cmd, **kwargs)"},{"line_number":247,"context_line":"    return processutils.execute(*cmd, **kwargs)"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"def ssh_execute(dest, *cmd, **kwargs):"},{"line_number":251,"context_line":"    \"\"\"Convenience wrapper to execute ssh command.\"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"5faad753_84f8407b","line":248,"range":{"start_line":122,"start_character":0,"end_line":248,"end_character":0},"updated":"2019-09-12 13:25:42.000000000","message":"This looks like a bad rebase. All of this stuff is gone (and should stay gone.)","commit_id":"853f3f41177af71038290962f30dd99f19d90773"}],"releasenotes/notes/bug-1798326-instance_spawning_pool_size-1fa983b6bac30c13.yaml":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"094c39eefa694ac8867a1bcd2d7a9430d9fdd1eb","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The [DEFAULT]/instance_spawning_pool_size sets the number of"},{"line_number":5,"context_line":"    greenthreads available in the eventlet.GreenPool for spawning"},{"line_number":6,"context_line":"    virtual machines. ``graceful_shutdown_timeout`` in nova.conf"},{"line_number":7,"context_line":"    is set to 9000 - must set a bigger number in order to work."},{"line_number":8,"context_line":"    `Bug 1798326`_"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    .. _Bug 1798326: https://bugs.launchpad.net/nova/+bug/1798326"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"7faddb67_5ab390e9","line":7,"range":{"start_line":6,"start_character":22,"end_line":7,"end_character":18},"updated":"2019-07-19 20:10:47.000000000","message":"this doesn\u0027t seem to be true\n\nOh, you\u0027re referring to [1]. If that were to land (which doesn\u0027t look likely) you would want this note to go there, I would think.\n\n[1] https://review.opendev.org/#/c/666302/","commit_id":"10d66947d359657814500cedd039c2e9e60625c3"},{"author":{"_account_id":28100,"name":"Martin Midolesov","email":"mmidolesov@vmware.com","username":"martinmidolesov"},"change_message_id":"702d60706889cb83bbc914b517fc1285c942e17e","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The [DEFAULT]/instance_spawning_pool_size sets the number of"},{"line_number":5,"context_line":"    greenthreads available in the eventlet.GreenPool for spawning"},{"line_number":6,"context_line":"    virtual machines. ``graceful_shutdown_timeout`` in nova.conf"},{"line_number":7,"context_line":"    is set to 9000 - must set a bigger number in order to work."},{"line_number":8,"context_line":"    `Bug 1798326`_"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    .. _Bug 1798326: https://bugs.launchpad.net/nova/+bug/1798326"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"7faddb67_f50da235","line":7,"range":{"start_line":6,"start_character":22,"end_line":7,"end_character":18},"in_reply_to":"7faddb67_5ab390e9","updated":"2019-07-22 08:16:02.000000000","message":"No this is not needed anymore - I wrote an explanation in the commit message - so this can be increased in nova.conf. So I abandoned the other change in oslo.service.","commit_id":"10d66947d359657814500cedd039c2e9e60625c3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"891908810025deed66f63bd56da9d8beb3a2fabf","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The [DEFAULT]/instance_spawning_pool_size sets the number of"},{"line_number":5,"context_line":"    greenthreads available in the eventlet.GreenPool for spawning"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7faddb67_ccc79145","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":5},"updated":"2019-07-24 13:56:28.000000000","message":"I wonder if this should be \u0027features\u0027","commit_id":"e4f55768173477deeb8f04ea4469ce6fa3090826"},{"author":{"_account_id":28100,"name":"Martin Midolesov","email":"mmidolesov@vmware.com","username":"martinmidolesov"},"change_message_id":"6864bc0f9c25b70e83f03d942a702bed43c1c229","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The [DEFAULT]/instance_spawning_pool_size sets the number of"},{"line_number":5,"context_line":"    greenthreads available in the eventlet.GreenPool for spawning"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7faddb67_ac7575ce","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":5},"in_reply_to":"7faddb67_ccc79145","updated":"2019-07-24 14:06:10.000000000","message":"Yeah it should be actually","commit_id":"e4f55768173477deeb8f04ea4469ce6fa3090826"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"891908810025deed66f63bd56da9d8beb3a2fabf","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    virtual machines."},{"line_number":7,"context_line":"    `Bug 1798326`_"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    .. _Bug 1798326: https://lombok-1.18.8.jarbugs.launchpad.net/nova/+bug/1798326"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7faddb67_0cd04950","line":9,"range":{"start_line":9,"start_character":21,"end_line":9,"end_character":82},"updated":"2019-07-24 13:56:28.000000000","message":"https://bugs.launchpad.net/nova/+bug/1798326","commit_id":"e4f55768173477deeb8f04ea4469ce6fa3090826"},{"author":{"_account_id":28100,"name":"Martin Midolesov","email":"mmidolesov@vmware.com","username":"martinmidolesov"},"change_message_id":"6864bc0f9c25b70e83f03d942a702bed43c1c229","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    virtual machines."},{"line_number":7,"context_line":"    `Bug 1798326`_"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    .. _Bug 1798326: https://lombok-1.18.8.jarbugs.launchpad.net/nova/+bug/1798326"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7faddb67_8c7c39b6","line":9,"range":{"start_line":9,"start_character":21,"end_line":9,"end_character":82},"in_reply_to":"7faddb67_0cd04950","updated":"2019-07-24 14:06:10.000000000","message":"I\u0027ll fix it","commit_id":"e4f55768173477deeb8f04ea4469ce6fa3090826"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1b10d53f612be783d65c775464462c9bb8ab2b81","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The [DEFAULT]/instance_spawning_pool_size sets the number of"},{"line_number":5,"context_line":"    greenthreads available in the eventlet.GreenPool for spawning"},{"line_number":6,"context_line":"    virtual machines."},{"line_number":7,"context_line":"    `Bug 1798326`_"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3fa7e38b_d49cacc1","line":4,"range":{"start_line":4,"start_character":9,"end_line":4,"end_character":16},"updated":"2019-09-23 20:16:13.000000000","message":"Why wouldn\u0027t this be in the [compute] group instead?","commit_id":"4a1e52de35f3e1775c3530200fe978e4fff165e5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4aebd247b5bb94f1fa728a902c35010439b13c32","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    The [DEFAULT]/instance_spawning_pool_size sets the number of"},{"line_number":5,"context_line":"    greenthreads available in the eventlet.GreenPool for spawning"},{"line_number":6,"context_line":"    instances. This option relates to `greaceful_shutdown_timeout`"},{"line_number":7,"context_line":"    option in matter that all tasks in the pool will be wait to finish when"},{"line_number":8,"context_line":"    we gracefully shutdown nova compute. After the timeout systemd will"},{"line_number":9,"context_line":"    perform hard kill on all running threads and all outstanding tasks enter"},{"line_number":10,"context_line":"    ERROR state once the service is started."}],"source_content_type":"text/x-yaml","patch_set":14,"id":"3fa7e38b_4c7cf7e9","line":7,"range":{"start_line":7,"start_character":26,"end_line":7,"end_character":35},"updated":"2020-02-04 10:47:25.000000000","message":"lets formulate this in a way that it talks about thing the user actually sees. I guess these are servers / instances spawn tasks","commit_id":"384424da994b10f26df7d68ea9d955cdb2b8b5fc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4aebd247b5bb94f1fa728a902c35010439b13c32","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The [DEFAULT]/instance_spawning_pool_size sets the number of"},{"line_number":5,"context_line":"    greenthreads available in the eventlet.GreenPool for spawning"},{"line_number":6,"context_line":"    instances. This option relates to `greaceful_shutdown_timeout`"},{"line_number":7,"context_line":"    option in matter that all tasks in the pool will be wait to finish when"},{"line_number":8,"context_line":"    we gracefully shutdown nova compute. After the timeout systemd will"},{"line_number":9,"context_line":"    perform hard kill on all running threads and all outstanding tasks enter"},{"line_number":10,"context_line":"    ERROR state once the service is started."}],"source_content_type":"text/x-yaml","patch_set":14,"id":"3fa7e38b_ec15a396","line":7,"range":{"start_line":6,"start_character":38,"end_line":7,"end_character":10},"updated":"2020-02-04 10:47:25.000000000","message":"of what?","commit_id":"384424da994b10f26df7d68ea9d955cdb2b8b5fc"},{"author":{"_account_id":28100,"name":"Martin Midolesov","email":"mmidolesov@vmware.com","username":"martinmidolesov"},"change_message_id":"cbc4195f27c4ffa90ff749e22102141aedd22d73","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    The [DEFAULT]/instance_spawning_pool_size sets the number of"},{"line_number":5,"context_line":"    greenthreads available in the eventlet.GreenPool for spawning"},{"line_number":6,"context_line":"    instances. This option relates to `greaceful_shutdown_timeout`"},{"line_number":7,"context_line":"    option in matter that all tasks in the pool will be wait to finish when"},{"line_number":8,"context_line":"    we gracefully shutdown nova compute. After the timeout systemd will"},{"line_number":9,"context_line":"    perform hard kill on all running threads and all outstanding tasks enter"},{"line_number":10,"context_line":"    ERROR state once the service is started."}],"source_content_type":"text/x-yaml","patch_set":14,"id":"3fa7e38b_bb5cbbef","line":7,"range":{"start_line":7,"start_character":26,"end_line":7,"end_character":35},"in_reply_to":"3fa7e38b_4c7cf7e9","updated":"2020-02-06 13:09:06.000000000","message":"I think this cannot be seen by the users. Yes those are instances - \"[DEFAULT]/instance_spawning_pool_size\" is in the beginning of the description.","commit_id":"384424da994b10f26df7d68ea9d955cdb2b8b5fc"},{"author":{"_account_id":28100,"name":"Martin Midolesov","email":"mmidolesov@vmware.com","username":"martinmidolesov"},"change_message_id":"cbc4195f27c4ffa90ff749e22102141aedd22d73","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The [DEFAULT]/instance_spawning_pool_size sets the number of"},{"line_number":5,"context_line":"    greenthreads available in the eventlet.GreenPool for spawning"},{"line_number":6,"context_line":"    instances. This option relates to `greaceful_shutdown_timeout`"},{"line_number":7,"context_line":"    option in matter that all tasks in the pool will be wait to finish when"},{"line_number":8,"context_line":"    we gracefully shutdown nova compute. After the timeout systemd will"},{"line_number":9,"context_line":"    perform hard kill on all running threads and all outstanding tasks enter"},{"line_number":10,"context_line":"    ERROR state once the service is started."}],"source_content_type":"text/x-yaml","patch_set":14,"id":"3fa7e38b_7b0ba3d3","line":7,"range":{"start_line":6,"start_character":38,"end_line":7,"end_character":10},"in_reply_to":"3fa7e38b_ec15a396","updated":"2020-02-06 13:09:06.000000000","message":"Don\u0027t get this one sorry. What\u0027s the question about?","commit_id":"384424da994b10f26df7d68ea9d955cdb2b8b5fc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4aebd247b5bb94f1fa728a902c35010439b13c32","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    greenthreads available in the eventlet.GreenPool for spawning"},{"line_number":6,"context_line":"    instances. This option relates to `greaceful_shutdown_timeout`"},{"line_number":7,"context_line":"    option in matter that all tasks in the pool will be wait to finish when"},{"line_number":8,"context_line":"    we gracefully shutdown nova compute. After the timeout systemd will"},{"line_number":9,"context_line":"    perform hard kill on all running threads and all outstanding tasks enter"},{"line_number":10,"context_line":"    ERROR state once the service is started."},{"line_number":11,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":14,"id":"3fa7e38b_6c7f73de","line":8,"range":{"start_line":8,"start_character":59,"end_line":8,"end_character":66},"updated":"2020-02-04 10:47:25.000000000","message":"nova might deployed with other than systemd init system.","commit_id":"384424da994b10f26df7d68ea9d955cdb2b8b5fc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"120c9486a2a881fad83399bddcd3dda2c984c01a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The [DEFAULT]/instance_spawning_pool_size sets the number of"},{"line_number":5,"context_line":"    greenthreads available in the eventlet.GreenPool for spawning"},{"line_number":6,"context_line":"    instances. This option relates to `greaceful_shutdown_timeout`"},{"line_number":7,"context_line":"    option in matter that all tasks in the pool will be wait to finish when"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"3fa7e38b_ee16ba57","line":4,"range":{"start_line":4,"start_character":9,"end_line":4,"end_character":16},"updated":"2020-02-07 13:38:35.000000000","message":"Isn\u0027t it in the [compute] section now?","commit_id":"c1429569ba97f499b5afad34c54904846eefcdd7"},{"author":{"_account_id":28100,"name":"Martin Midolesov","email":"mmidolesov@vmware.com","username":"martinmidolesov"},"change_message_id":"29f0e44e14b459aca78001abb607f6d24e2a9289","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The [DEFAULT]/instance_spawning_pool_size sets the number of"},{"line_number":5,"context_line":"    greenthreads available in the eventlet.GreenPool for spawning"},{"line_number":6,"context_line":"    instances. This option relates to `greaceful_shutdown_timeout`"},{"line_number":7,"context_line":"    option in matter that all tasks in the pool will be wait to finish when"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"3fa7e38b_b741f264","line":4,"range":{"start_line":4,"start_character":9,"end_line":4,"end_character":16},"in_reply_to":"3fa7e38b_ee16ba57","updated":"2020-02-07 15:06:09.000000000","message":"Yes","commit_id":"c1429569ba97f499b5afad34c54904846eefcdd7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ea450fb9593519f9860053afac8bb7ef9fb22a18","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The [compute]/instance_spawning_pool_size sets the number of"},{"line_number":5,"context_line":"    greenthreads available in the eventlet.GreenPool for spawning"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"1fa4df85_dac32c88","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":8},"updated":"2020-03-06 16:39:15.000000000","message":"Is this really a feature or an upgrade impact?","commit_id":"4b1e6da6e9a02b199964a863ac456b02d49e25a1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ea450fb9593519f9860053afac8bb7ef9fb22a18","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The [compute]/instance_spawning_pool_size sets the number of"},{"line_number":5,"context_line":"    greenthreads available in the eventlet.GreenPool for spawning"},{"line_number":6,"context_line":"    instances. This option relates to `greaceful_shutdown_timeout`"},{"line_number":7,"context_line":"    option in matter that all tasks in the pool will be wait to finish when"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"1fa4df85_7abeb8ff","line":4,"range":{"start_line":4,"start_character":8,"end_line":4,"end_character":45},"updated":"2020-03-06 16:39:15.000000000","message":"``literal``","commit_id":"4b1e6da6e9a02b199964a863ac456b02d49e25a1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ea450fb9593519f9860053afac8bb7ef9fb22a18","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The [compute]/instance_spawning_pool_size sets the number of"},{"line_number":5,"context_line":"    greenthreads available in the eventlet.GreenPool for spawning"},{"line_number":6,"context_line":"    instances. This option relates to `greaceful_shutdown_timeout`"},{"line_number":7,"context_line":"    option in matter that all tasks in the pool will be wait to finish when"},{"line_number":8,"context_line":"    we gracefully shutdown nova compute. After the timeout systemd will"},{"line_number":9,"context_line":"    perform hard kill on all running threads and all outstanding tasks enter"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"1fa4df85_facaa89e","line":6,"range":{"start_line":6,"start_character":38,"end_line":6,"end_character":66},"updated":"2020-03-06 16:39:15.000000000","message":"``literal``","commit_id":"4b1e6da6e9a02b199964a863ac456b02d49e25a1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ea450fb9593519f9860053afac8bb7ef9fb22a18","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The [compute]/instance_spawning_pool_size sets the number of"},{"line_number":5,"context_line":"    greenthreads available in the eventlet.GreenPool for spawning"},{"line_number":6,"context_line":"    instances. This option relates to `greaceful_shutdown_timeout`"},{"line_number":7,"context_line":"    option in matter that all tasks in the pool will be wait to finish when"},{"line_number":8,"context_line":"    we gracefully shutdown nova compute. After the timeout systemd will"},{"line_number":9,"context_line":"    perform hard kill on all running threads and all outstanding tasks enter"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"1fa4df85_9ae05428","line":6,"range":{"start_line":6,"start_character":39,"end_line":6,"end_character":65},"updated":"2020-03-06 16:39:15.000000000","message":"graceful","commit_id":"4b1e6da6e9a02b199964a863ac456b02d49e25a1"}]}
