)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"595a2ea829c0262f791596c0f2ce5d6e029ec1e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"ff062e3a_6bb3e0fa","updated":"2025-06-11 10:32:29.000000000","message":"Minor documentation pitfalls and suggestions.","commit_id":"3622f2246fe4651cb8f5dc1c3981ee1be2a9d72e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4a9dac8bab14f85ce96fb579b57f282d3d262529","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"cada4a96_7de65de8","updated":"2025-07-22 09:16:24.000000000","message":"Checked the HTML here https://98e9c4da8b3d69a5c439-141002502b731eb238fb314d08aa7d2f.ssl.cf5.rackcdn.com/openstack/42f6ddfbd5344bfaa149a0d639701034/docs/admin/concurrency.html\n\n-1 because I have a few nits","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"626a13701d33491ef040a5e1b464306c064c30b7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"eea222c6_dce37217","updated":"2025-07-22 12:36:43.000000000","message":"I understand your wish to provide more specific answers to what to tune and when and how. But we simply don\u0027t have the data to provide such guidance. We don\u0027t have scale testing upstream. I\u0027m intentionally vague in the doc. Each deployer should do its own measurement and tuning or rely on a vendor who does scale testing.\n\nI will respin the patch and fix and clarify a bunch of things.","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"80a35cb6e1075c35cdc28eb02ab118b8ffc8d3b2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"052888a5_e2dd3d21","updated":"2025-07-28 13:24:40.000000000","message":"I think the last revision seems enough good for me, and we could amend it later based on our first feedbacks we got. Nothing worth holding.","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c70eda40d4f4ec34e36587e83527be42e9433c7b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"229382fa_96768fd8","updated":"2025-07-29 15:02:20.000000000","message":"Lots of small things here. Could do this as a followup but it might be hard to digest.","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7f0655e0fe019593b2db49313fa6069b95967926","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"bfd3fec2_1f83f5c7","updated":"2025-07-30 00:22:51.000000000","message":"i should not try to revew this at 01:20 but skiming dans comments i generally aggre with them.\n\nim ok with addressing them in a follow up but if we do tha ti think it would be best ot put one directly on top of this out of line of the rest of the series rather then putting it at the end.\n\nill try and loop back to this and the other patches on thrusday or friday.","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"2034714714b373e632e247b9737f236877665e71","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"f97f1b01_4b57b3fa","updated":"2025-07-31 23:28:50.000000000","message":"I think these should be fixed but I also don\u0027t want you to rebase 15 patches. So maybe we +W this and then after it merges make a standalone followup patch (to avoid having to maintain it in this patch stack)?","commit_id":"6e09ea7f2fd9e01f4480f6bb4766e87bf4cfad4e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"39d185c44c5a134ad2651e0cf1dc762c090c92f6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"5057c252_85e44730","updated":"2025-08-01 08:49:04.000000000","message":"I will respin today.","commit_id":"6e09ea7f2fd9e01f4480f6bb4766e87bf4cfad4e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a98da8e25f3b03ca139c7bdb788c9776f5b63270","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"d351b3e4_1c0cda3e","updated":"2025-07-31 14:39:50.000000000","message":"One more nit but not worth respinning of course.","commit_id":"6e09ea7f2fd9e01f4480f6bb4766e87bf4cfad4e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c42140eda669ea2645dced7468aa1ea2118ec205","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"8a4c3876_8b0897d7","updated":"2025-07-30 19:45:31.000000000","message":"dans comments seam to have been adressed and i dont really ahve anything more to add so this looks good to me over all","commit_id":"6e09ea7f2fd9e01f4480f6bb4766e87bf4cfad4e"}],"doc/source/admin/concurrency.rst":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"845669cf9de89b5db2f9c665ca4926f6c72796fe","unresolved":true,"context_lines":[{"line_number":1,"context_line":"Nova service concurrency"},{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"For a long time nova services relied almost exclusively on the Eventlet library"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1e7f542a_694f7017","line":1,"updated":"2025-05-12 14:43:32.000000000","message":"We also have a doc about threading in https://docs.openstack.org/nova/latest/reference/threading.html","commit_id":"a3840b861c1140b5b12f452f61a5a1fcf04e375d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5258278a389c5ec5824ae6186eb42cf89be01ad7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Nova service concurrency"},{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"For a long time nova services relied almost exclusively on the Eventlet library"}],"source_content_type":"text/x-rst","patch_set":1,"id":"29686e64_2d2a19e2","line":1,"in_reply_to":"1e7f542a_694f7017","updated":"2025-05-19 10:50:16.000000000","message":"Done","commit_id":"a3840b861c1140b5b12f452f61a5a1fcf04e375d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bcb5482b4523fe71c718bc023ac915a3832aca1b","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d52a0698_5605e5f2","line":82,"updated":"2025-05-15 17:09:11.000000000","message":"Mention [DEFAULT]thread_pool_statistic_period as well","commit_id":"2560d65d6852d03c781367601484882d55dd036f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5258278a389c5ec5824ae6186eb42cf89be01ad7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"1d3d72ab_34af1041","line":82,"in_reply_to":"d52a0698_5605e5f2","updated":"2025-05-19 10:50:16.000000000","message":"Done","commit_id":"2560d65d6852d03c781367601484882d55dd036f"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"595a2ea829c0262f791596c0f2ce5d6e029ec1e8","unresolved":true,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Tunables for threading mode"},{"line_number":28,"context_line":"---------------------------"},{"line_number":29,"context_line":"As threads are more expensive resources that greenthreads Nova provides a set"},{"line_number":30,"context_line":"of configuration options to allow fine tuning the deployment based on load"},{"line_number":31,"context_line":"and resource constraints. The default values are selected to support a basic,"},{"line_number":32,"context_line":"small deployment without consuming a lot more memory resources as the legacy"}],"source_content_type":"text/x-rst","patch_set":9,"id":"4efa762d_be90d7eb","line":29,"range":{"start_line":29,"start_character":40,"end_line":29,"end_character":44},"updated":"2025-06-11 10:32:29.000000000","message":"than","commit_id":"3622f2246fe4651cb8f5dc1c3981ee1be2a9d72e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c930c2442600c90680bbfeba2050e8efb1a1501b","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Tunables for threading mode"},{"line_number":28,"context_line":"---------------------------"},{"line_number":29,"context_line":"As threads are more expensive resources that greenthreads Nova provides a set"},{"line_number":30,"context_line":"of configuration options to allow fine tuning the deployment based on load"},{"line_number":31,"context_line":"and resource constraints. The default values are selected to support a basic,"},{"line_number":32,"context_line":"small deployment without consuming a lot more memory resources as the legacy"}],"source_content_type":"text/x-rst","patch_set":9,"id":"0535ab0a_c01eace8","line":29,"range":{"start_line":29,"start_character":40,"end_line":29,"end_character":44},"in_reply_to":"4efa762d_be90d7eb","updated":"2025-06-13 14:18:34.000000000","message":"Done","commit_id":"3622f2246fe4651cb8f5dc1c3981ee1be2a9d72e"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"595a2ea829c0262f791596c0f2ce5d6e029ec1e8","unresolved":true,"context_lines":[{"line_number":29,"context_line":"As threads are more expensive resources that greenthreads Nova provides a set"},{"line_number":30,"context_line":"of configuration options to allow fine tuning the deployment based on load"},{"line_number":31,"context_line":"and resource constraints. The default values are selected to support a basic,"},{"line_number":32,"context_line":"small deployment without consuming a lot more memory resources as the legacy"},{"line_number":33,"context_line":"Eventlet mode. Increasing the size of the below thread pools means that the"},{"line_number":34,"context_line":"given service will consume more memory but allow more tasks to be executed"},{"line_number":35,"context_line":"concurrently."}],"source_content_type":"text/x-rst","patch_set":9,"id":"46edb21b_247685cf","line":32,"range":{"start_line":32,"start_character":62,"end_line":32,"end_character":65},"updated":"2025-06-11 10:32:29.000000000","message":", as","commit_id":"3622f2246fe4651cb8f5dc1c3981ee1be2a9d72e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c930c2442600c90680bbfeba2050e8efb1a1501b","unresolved":false,"context_lines":[{"line_number":29,"context_line":"As threads are more expensive resources that greenthreads Nova provides a set"},{"line_number":30,"context_line":"of configuration options to allow fine tuning the deployment based on load"},{"line_number":31,"context_line":"and resource constraints. The default values are selected to support a basic,"},{"line_number":32,"context_line":"small deployment without consuming a lot more memory resources as the legacy"},{"line_number":33,"context_line":"Eventlet mode. Increasing the size of the below thread pools means that the"},{"line_number":34,"context_line":"given service will consume more memory but allow more tasks to be executed"},{"line_number":35,"context_line":"concurrently."}],"source_content_type":"text/x-rst","patch_set":9,"id":"6414060a_6bbdd067","line":32,"range":{"start_line":32,"start_character":62,"end_line":32,"end_character":65},"in_reply_to":"46edb21b_247685cf","updated":"2025-06-13 14:18:34.000000000","message":"Done","commit_id":"3622f2246fe4651cb8f5dc1c3981ee1be2a9d72e"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"595a2ea829c0262f791596c0f2ce5d6e029ec1e8","unresolved":true,"context_lines":[{"line_number":31,"context_line":"and resource constraints. The default values are selected to support a basic,"},{"line_number":32,"context_line":"small deployment without consuming a lot more memory resources as the legacy"},{"line_number":33,"context_line":"Eventlet mode. Increasing the size of the below thread pools means that the"},{"line_number":34,"context_line":"given service will consume more memory but allow more tasks to be executed"},{"line_number":35,"context_line":"concurrently."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"* :oslo.config:option:`cell_worker_thread_pool_size`: Used to execute tasks"}],"source_content_type":"text/x-rst","patch_set":9,"id":"28c30201_7b54c120","line":34,"range":{"start_line":34,"start_character":43,"end_line":34,"end_character":48},"updated":"2025-06-11 10:32:29.000000000","message":"will also allow","commit_id":"3622f2246fe4651cb8f5dc1c3981ee1be2a9d72e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c930c2442600c90680bbfeba2050e8efb1a1501b","unresolved":false,"context_lines":[{"line_number":31,"context_line":"and resource constraints. The default values are selected to support a basic,"},{"line_number":32,"context_line":"small deployment without consuming a lot more memory resources as the legacy"},{"line_number":33,"context_line":"Eventlet mode. Increasing the size of the below thread pools means that the"},{"line_number":34,"context_line":"given service will consume more memory but allow more tasks to be executed"},{"line_number":35,"context_line":"concurrently."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"* :oslo.config:option:`cell_worker_thread_pool_size`: Used to execute tasks"}],"source_content_type":"text/x-rst","patch_set":9,"id":"622ad14d_8c718d2b","line":34,"range":{"start_line":34,"start_character":43,"end_line":34,"end_character":48},"in_reply_to":"28c30201_7b54c120","updated":"2025-06-13 14:18:34.000000000","message":"Done","commit_id":"3622f2246fe4651cb8f5dc1c3981ee1be2a9d72e"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"595a2ea829c0262f791596c0f2ce5d6e029ec1e8","unresolved":true,"context_lines":[{"line_number":37,"context_line":"* :oslo.config:option:`cell_worker_thread_pool_size`: Used to execute tasks"},{"line_number":38,"context_line":"  across all the cells within the deployment."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"  E.g. To generate the result of the ``openstack server list`` CLI command the"},{"line_number":41,"context_line":"  nova-api service will use one thread for each cell to load the nova instances"},{"line_number":42,"context_line":"  from the cell database."},{"line_number":43,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fdf0a012_dae236d9","line":40,"range":{"start_line":40,"start_character":74,"end_line":40,"end_character":75},"updated":"2025-06-11 10:32:29.000000000","message":",","commit_id":"3622f2246fe4651cb8f5dc1c3981ee1be2a9d72e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c930c2442600c90680bbfeba2050e8efb1a1501b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"* :oslo.config:option:`cell_worker_thread_pool_size`: Used to execute tasks"},{"line_number":38,"context_line":"  across all the cells within the deployment."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"  E.g. To generate the result of the ``openstack server list`` CLI command the"},{"line_number":41,"context_line":"  nova-api service will use one thread for each cell to load the nova instances"},{"line_number":42,"context_line":"  from the cell database."},{"line_number":43,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"9f4c6431_6485a8c5","line":40,"range":{"start_line":40,"start_character":74,"end_line":40,"end_character":75},"in_reply_to":"fdf0a012_dae236d9","updated":"2025-06-13 14:18:34.000000000","message":"Done","commit_id":"3622f2246fe4651cb8f5dc1c3981ee1be2a9d72e"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"595a2ea829c0262f791596c0f2ce5d6e029ec1e8","unresolved":true,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":".. __: https://pymysql.readthedocs.io/en/latest/modules/connections.html#module-pymysql.connections"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"We suggest to use both in a deployment where nova services running in threading"},{"line_number":90,"context_line":"mode."}],"source_content_type":"text/x-rst","patch_set":9,"id":"88e8ee1b_21da2d09","line":89,"range":{"start_line":89,"start_character":0,"end_line":89,"end_character":79},"updated":"2025-06-11 10:32:29.000000000","message":"We recommend using both in deployments where Nova services are running in threading mode.","commit_id":"3622f2246fe4651cb8f5dc1c3981ee1be2a9d72e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c930c2442600c90680bbfeba2050e8efb1a1501b","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":".. __: https://pymysql.readthedocs.io/en/latest/modules/connections.html#module-pymysql.connections"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"We suggest to use both in a deployment where nova services running in threading"},{"line_number":90,"context_line":"mode."}],"source_content_type":"text/x-rst","patch_set":9,"id":"40a3743a_e238f5ff","line":89,"range":{"start_line":89,"start_character":0,"end_line":89,"end_character":79},"in_reply_to":"88e8ee1b_21da2d09","updated":"2025-06-13 14:18:34.000000000","message":"Done","commit_id":"3622f2246fe4651cb8f5dc1c3981ee1be2a9d72e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4a9dac8bab14f85ce96fb579b57f282d3d262529","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Nova service concurrency"},{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"For a long time nova services relied almost exclusively on the Eventlet library"},{"line_number":5,"context_line":"for processing multiple API requests, RPC requests and other tasks that needed"},{"line_number":6,"context_line":"concurrency. Since Eventlet is nearing end of life Nova is started"},{"line_number":7,"context_line":"transitioning its concurrency model to native threads. During this transition"}],"source_content_type":"text/x-rst","patch_set":20,"id":"d7e4b46d_fcdb7c45","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":15},"updated":"2025-07-22 09:16:24.000000000","message":"For ever, even ? 😊","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"626a13701d33491ef040a5e1b464306c064c30b7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Nova service concurrency"},{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"For a long time nova services relied almost exclusively on the Eventlet library"},{"line_number":5,"context_line":"for processing multiple API requests, RPC requests and other tasks that needed"},{"line_number":6,"context_line":"concurrency. Since Eventlet is nearing end of life Nova is started"},{"line_number":7,"context_line":"transitioning its concurrency model to native threads. During this transition"}],"source_content_type":"text/x-rst","patch_set":20,"id":"d811a00c_3b866643","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":15},"in_reply_to":"d7e4b46d_fcdb7c45","updated":"2025-07-22 12:36:43.000000000","message":"I don\u0027t have that deep history of nova :)","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4a9dac8bab14f85ce96fb579b57f282d3d262529","unresolved":true,"context_lines":[{"line_number":3,"context_line":""},{"line_number":4,"context_line":"For a long time nova services relied almost exclusively on the Eventlet library"},{"line_number":5,"context_line":"for processing multiple API requests, RPC requests and other tasks that needed"},{"line_number":6,"context_line":"concurrency. Since Eventlet is nearing end of life Nova is started"},{"line_number":7,"context_line":"transitioning its concurrency model to native threads. During this transition"},{"line_number":8,"context_line":"Nova maintains the Eventlet based concurrency mode while building up support"},{"line_number":9,"context_line":"for the native threading mode."}],"source_content_type":"text/x-rst","patch_set":20,"id":"dc036b5e_983f7b1a","line":6,"range":{"start_line":6,"start_character":28,"end_line":6,"end_character":50},"updated":"2025-07-22 09:16:24.000000000","message":"I\u0027d rather propose \"since eventlet support of recent python distributors became more and more challenging\" or I could just mention the TC goal instead.","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"17897e99af9be706fc6508b5eba13aa7c1977528","unresolved":false,"context_lines":[{"line_number":3,"context_line":""},{"line_number":4,"context_line":"For a long time nova services relied almost exclusively on the Eventlet library"},{"line_number":5,"context_line":"for processing multiple API requests, RPC requests and other tasks that needed"},{"line_number":6,"context_line":"concurrency. Since Eventlet is nearing end of life Nova is started"},{"line_number":7,"context_line":"transitioning its concurrency model to native threads. During this transition"},{"line_number":8,"context_line":"Nova maintains the Eventlet based concurrency mode while building up support"},{"line_number":9,"context_line":"for the native threading mode."}],"source_content_type":"text/x-rst","patch_set":20,"id":"ec5df37c_0851799c","line":6,"range":{"start_line":6,"start_character":28,"end_line":6,"end_character":50},"in_reply_to":"d585f94f_be96cca9","updated":"2025-07-24 14:00:42.000000000","message":"Done","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"626a13701d33491ef040a5e1b464306c064c30b7","unresolved":true,"context_lines":[{"line_number":3,"context_line":""},{"line_number":4,"context_line":"For a long time nova services relied almost exclusively on the Eventlet library"},{"line_number":5,"context_line":"for processing multiple API requests, RPC requests and other tasks that needed"},{"line_number":6,"context_line":"concurrency. Since Eventlet is nearing end of life Nova is started"},{"line_number":7,"context_line":"transitioning its concurrency model to native threads. During this transition"},{"line_number":8,"context_line":"Nova maintains the Eventlet based concurrency mode while building up support"},{"line_number":9,"context_line":"for the native threading mode."}],"source_content_type":"text/x-rst","patch_set":20,"id":"d585f94f_be96cca9","line":6,"range":{"start_line":6,"start_character":28,"end_line":6,"end_character":50},"in_reply_to":"dc036b5e_983f7b1a","updated":"2025-07-22 12:36:43.000000000","message":"I can mention the TC goal for sure.","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4a9dac8bab14f85ce96fb579b57f282d3d262529","unresolved":true,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":".. note::"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"   The natice threading mode is not ready yet. Do not use it in production."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Selecting concurrency mode for a service"},{"line_number":16,"context_line":"----------------------------------------"}],"source_content_type":"text/x-rst","patch_set":20,"id":"39d0e44a_d6a52036","line":13,"range":{"start_line":13,"start_character":7,"end_line":13,"end_character":13},"updated":"2025-07-22 09:16:24.000000000","message":"native","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"17897e99af9be706fc6508b5eba13aa7c1977528","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":".. note::"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"   The natice threading mode is not ready yet. Do not use it in production."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Selecting concurrency mode for a service"},{"line_number":16,"context_line":"----------------------------------------"}],"source_content_type":"text/x-rst","patch_set":20,"id":"83f85975_34d7389a","line":13,"range":{"start_line":13,"start_character":7,"end_line":13,"end_character":13},"in_reply_to":"39d0e44a_d6a52036","updated":"2025-07-24 14:00:42.000000000","message":"Done","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4a9dac8bab14f85ce96fb579b57f282d3d262529","unresolved":true,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":".. note::"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"   Currently only the nova-scheduler can be switched to native threading mode."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Tunables for the native threading mode"}],"source_content_type":"text/x-rst","patch_set":20,"id":"e3536fb9_fb4559bf","line":24,"updated":"2025-07-22 09:16:24.000000000","message":"you should mention the target release (Flamingo)\nSince docs are usually shown by using the master branch, I want to make sure that latest tells exactly when we started to use threads.","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"626a13701d33491ef040a5e1b464306c064c30b7","unresolved":true,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":".. note::"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"   Currently only the nova-scheduler can be switched to native threading mode."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Tunables for the native threading mode"}],"source_content_type":"text/x-rst","patch_set":20,"id":"f20e1483_6be5d509","line":24,"in_reply_to":"e3536fb9_fb4559bf","updated":"2025-07-22 12:36:43.000000000","message":"Good point. I will fix this","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"17897e99af9be706fc6508b5eba13aa7c1977528","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":".. note::"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"   Currently only the nova-scheduler can be switched to native threading mode."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Tunables for the native threading mode"}],"source_content_type":"text/x-rst","patch_set":20,"id":"cc21448f_af631adc","line":24,"in_reply_to":"f20e1483_6be5d509","updated":"2025-07-24 14:00:42.000000000","message":"Done","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4a9dac8bab14f85ce96fb579b57f282d3d262529","unresolved":true,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"  E.g. To generate the result of the ``openstack server list`` CLI command, the"},{"line_number":41,"context_line":"  nova-api service will use one native thread for each cell to load the nova"},{"line_number":42,"context_line":"  instances from the cell database."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"  So if the deployment has many cells then the size of this pools probably need"},{"line_number":45,"context_line":"  to be increased."}],"source_content_type":"text/x-rst","patch_set":20,"id":"0ce1571c_a8868d05","line":42,"range":{"start_line":42,"start_character":21,"end_line":42,"end_character":25},"updated":"2025-07-22 09:16:24.000000000","message":"related cell database","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"17897e99af9be706fc6508b5eba13aa7c1977528","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"  E.g. To generate the result of the ``openstack server list`` CLI command, the"},{"line_number":41,"context_line":"  nova-api service will use one native thread for each cell to load the nova"},{"line_number":42,"context_line":"  instances from the cell database."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"  So if the deployment has many cells then the size of this pools probably need"},{"line_number":45,"context_line":"  to be increased."}],"source_content_type":"text/x-rst","patch_set":20,"id":"e4b3785c_6ce05097","line":42,"range":{"start_line":42,"start_character":21,"end_line":42,"end_character":25},"in_reply_to":"0ce1571c_a8868d05","updated":"2025-07-24 14:00:42.000000000","message":"Done","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4a9dac8bab14f85ce96fb579b57f282d3d262529","unresolved":true,"context_lines":[{"line_number":41,"context_line":"  nova-api service will use one native thread for each cell to load the nova"},{"line_number":42,"context_line":"  instances from the cell database."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"  So if the deployment has many cells then the size of this pools probably need"},{"line_number":45,"context_line":"  to be increased."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"  This option is only relevant for nova-api, nova-scheduler, and"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3e22b575_10609bec","line":44,"range":{"start_line":44,"start_character":75,"end_line":44,"end_character":79},"updated":"2025-07-22 09:16:24.000000000","message":"needs","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4a9dac8bab14f85ce96fb579b57f282d3d262529","unresolved":true,"context_lines":[{"line_number":41,"context_line":"  nova-api service will use one native thread for each cell to load the nova"},{"line_number":42,"context_line":"  instances from the cell database."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"  So if the deployment has many cells then the size of this pools probably need"},{"line_number":45,"context_line":"  to be increased."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"  This option is only relevant for nova-api, nova-scheduler, and"}],"source_content_type":"text/x-rst","patch_set":20,"id":"b3ba0f7f_db98e4db","line":44,"range":{"start_line":44,"start_character":60,"end_line":44,"end_character":65},"updated":"2025-07-22 09:16:24.000000000","message":"pool","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"17897e99af9be706fc6508b5eba13aa7c1977528","unresolved":false,"context_lines":[{"line_number":41,"context_line":"  nova-api service will use one native thread for each cell to load the nova"},{"line_number":42,"context_line":"  instances from the cell database."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"  So if the deployment has many cells then the size of this pools probably need"},{"line_number":45,"context_line":"  to be increased."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"  This option is only relevant for nova-api, nova-scheduler, and"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3a28bc4b_c8f46223","line":44,"range":{"start_line":44,"start_character":75,"end_line":44,"end_character":79},"in_reply_to":"3e22b575_10609bec","updated":"2025-07-24 14:00:42.000000000","message":"Done","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"17897e99af9be706fc6508b5eba13aa7c1977528","unresolved":false,"context_lines":[{"line_number":41,"context_line":"  nova-api service will use one native thread for each cell to load the nova"},{"line_number":42,"context_line":"  instances from the cell database."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"  So if the deployment has many cells then the size of this pools probably need"},{"line_number":45,"context_line":"  to be increased."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"  This option is only relevant for nova-api, nova-scheduler, and"}],"source_content_type":"text/x-rst","patch_set":20,"id":"c50b56b7_1f288f55","line":44,"range":{"start_line":44,"start_character":60,"end_line":44,"end_character":65},"in_reply_to":"b3ba0f7f_db98e4db","updated":"2025-07-24 14:00:42.000000000","message":"Done","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4a9dac8bab14f85ce96fb579b57f282d3d262529","unresolved":true,"context_lines":[{"line_number":45,"context_line":"  to be increased."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"  This option is only relevant for nova-api, nova-scheduler, and"},{"line_number":48,"context_line":"  nova-conductor."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* :oslo.config:option:`executor_thread_pool_size`: Used to handle incoming RPC"},{"line_number":51,"context_line":"  request. The size of the pool needs to be adjusted based on the number of"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7decfa44_7eb75164","line":48,"updated":"2025-07-22 09:16:24.000000000","message":"could you please explain why we could set the option for other services but nova-scheduler ?","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"80a35cb6e1075c35cdc28eb02ab118b8ffc8d3b2","unresolved":false,"context_lines":[{"line_number":45,"context_line":"  to be increased."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"  This option is only relevant for nova-api, nova-scheduler, and"},{"line_number":48,"context_line":"  nova-conductor."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* :oslo.config:option:`executor_thread_pool_size`: Used to handle incoming RPC"},{"line_number":51,"context_line":"  request. The size of the pool needs to be adjusted based on the number of"}],"source_content_type":"text/x-rst","patch_set":20,"id":"b941c7c8_cb075192","line":48,"in_reply_to":"06fa9484_06bad1b0","updated":"2025-07-28 13:24:40.000000000","message":"I understand your concerns about explaining too much, we somehow need to find a way in between nothing and too much.\n\nThanks for clarifying the usage.","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"626a13701d33491ef040a5e1b464306c064c30b7","unresolved":true,"context_lines":[{"line_number":45,"context_line":"  to be increased."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"  This option is only relevant for nova-api, nova-scheduler, and"},{"line_number":48,"context_line":"  nova-conductor."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* :oslo.config:option:`executor_thread_pool_size`: Used to handle incoming RPC"},{"line_number":51,"context_line":"  request. The size of the pool needs to be adjusted based on the number of"}],"source_content_type":"text/x-rst","patch_set":20,"id":"06fa9484_06bad1b0","line":48,"in_reply_to":"7decfa44_7eb75164","updated":"2025-07-22 12:36:43.000000000","message":"You have the example of nova-api at L40. The nova-scheduler uses it to load compute nodes across cells.\n\nEach service that does a cross cell min service version check will use this pool at startup.\n\nIn the other hand nova-compute cannot use scatter gather for sure as it has no access to the api_db to see the cells. It asks the cell conductor for the cell local min version check at startup but that is a pure DB query not a scatter gather on the cell conductor.\n\nThe nova-novncproxy ditto has no access to the api DB.\n\nThe nova-metadata service is a good question if it deployed on top (instead of per cell) then it might use scatter-gather. I have to check.\n\nThe general problems with these specific statements that I\u0027m sure these will change without modifying this document in the process. So I\u0027m a bit reluctant to document too many and too specific examples.","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4a9dac8bab14f85ce96fb579b57f282d3d262529","unresolved":true,"context_lines":[{"line_number":48,"context_line":"  nova-conductor."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* :oslo.config:option:`executor_thread_pool_size`: Used to handle incoming RPC"},{"line_number":51,"context_line":"  request. The size of the pool needs to be adjusted based on the number of"},{"line_number":52,"context_line":"  computes each nova-conductor service handles, and the number of Nova"},{"line_number":53,"context_line":"  lifecycle operations the deployment needs to handle."},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"b9aa2c1a_52249cb7","line":51,"range":{"start_line":51,"start_character":2,"end_line":51,"end_character":9},"updated":"2025-07-22 09:16:24.000000000","message":"requests","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"80a35cb6e1075c35cdc28eb02ab118b8ffc8d3b2","unresolved":false,"context_lines":[{"line_number":48,"context_line":"  nova-conductor."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* :oslo.config:option:`executor_thread_pool_size`: Used to handle incoming RPC"},{"line_number":51,"context_line":"  request. The size of the pool needs to be adjusted based on the number of"},{"line_number":52,"context_line":"  computes each nova-conductor service handles, and the number of Nova"},{"line_number":53,"context_line":"  lifecycle operations the deployment needs to handle."},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"2da28d48_672d3803","line":51,"range":{"start_line":51,"start_character":2,"end_line":51,"end_character":9},"in_reply_to":"b9aa2c1a_52249cb7","updated":"2025-07-28 13:24:40.000000000","message":"Done","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4a9dac8bab14f85ce96fb579b57f282d3d262529","unresolved":true,"context_lines":[{"line_number":50,"context_line":"* :oslo.config:option:`executor_thread_pool_size`: Used to handle incoming RPC"},{"line_number":51,"context_line":"  request. The size of the pool needs to be adjusted based on the number of"},{"line_number":52,"context_line":"  computes each nova-conductor service handles, and the number of Nova"},{"line_number":53,"context_line":"  lifecycle operations the deployment needs to handle."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"  This option is only relevant for nova-scheduler, nova-conductor, and"},{"line_number":56,"context_line":"  nova-compute."}],"source_content_type":"text/x-rst","patch_set":20,"id":"9f162033_0747db7b","line":53,"updated":"2025-07-22 09:16:24.000000000","message":"maybe some examples or rules of thumb could be helpful. Augmenting the cell_worker_thread_pool_size value seems to be easy to understand : if you have more cells, just tune it. Here, maybe just say that if the workloads are creating or moving a lot of instances with only a few computes, then you should definitely modify the value.","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"80a35cb6e1075c35cdc28eb02ab118b8ffc8d3b2","unresolved":false,"context_lines":[{"line_number":50,"context_line":"* :oslo.config:option:`executor_thread_pool_size`: Used to handle incoming RPC"},{"line_number":51,"context_line":"  request. The size of the pool needs to be adjusted based on the number of"},{"line_number":52,"context_line":"  computes each nova-conductor service handles, and the number of Nova"},{"line_number":53,"context_line":"  lifecycle operations the deployment needs to handle."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"  This option is only relevant for nova-scheduler, nova-conductor, and"},{"line_number":56,"context_line":"  nova-compute."}],"source_content_type":"text/x-rst","patch_set":20,"id":"4aa530d4_544663c7","line":53,"in_reply_to":"078b8987_86a9bcd1","updated":"2025-07-28 13:24:40.000000000","message":"OK, let\u0027s try to keep it vague for now and we could refine the doc later.","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"626a13701d33491ef040a5e1b464306c064c30b7","unresolved":true,"context_lines":[{"line_number":50,"context_line":"* :oslo.config:option:`executor_thread_pool_size`: Used to handle incoming RPC"},{"line_number":51,"context_line":"  request. The size of the pool needs to be adjusted based on the number of"},{"line_number":52,"context_line":"  computes each nova-conductor service handles, and the number of Nova"},{"line_number":53,"context_line":"  lifecycle operations the deployment needs to handle."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"  This option is only relevant for nova-scheduler, nova-conductor, and"},{"line_number":56,"context_line":"  nova-compute."}],"source_content_type":"text/x-rst","patch_set":20,"id":"078b8987_86a9bcd1","line":53,"in_reply_to":"9f162033_0747db7b","updated":"2025-07-22 12:36:43.000000000","message":"For sure it would be helpful to have examples but we don\u0027t have the data. Upstream we don\u0027t do scale testing so I have no way to determine good numbers other than guessing from the limited CI runs. I suggest each company (e.g. RH) selling support to do a proper scale testing to gather the data and calculate the numbers accordingly.\n\n\u003e if the workloads are creating or moving a lot of instances with only a few computes, then you should definitely modify the value.\n\nI\u0027m not sure about the \"few computes\". Other than that I think what I wrote means the same as what you suggest.","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4a9dac8bab14f85ce96fb579b57f282d3d262529","unresolved":true,"context_lines":[{"line_number":53,"context_line":"  lifecycle operations the deployment needs to handle."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"  This option is only relevant for nova-scheduler, nova-conductor, and"},{"line_number":56,"context_line":"  nova-compute."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* :oslo.config:option:`default_thread_pool_size`: Used by various concurrent"},{"line_number":59,"context_line":"  tasks in the service that are not categorized into the above pools."}],"source_content_type":"text/x-rst","patch_set":20,"id":"3b2a920e_6f989713","line":56,"updated":"2025-07-22 09:16:24.000000000","message":"ditto L48\n\nAlso, the values would be different between each of the services. For example, you could only need to update executor_thread_pool_size value for the computes if you have a large number of computes so maybe we should just explain that the values should be different between all the services.","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"626a13701d33491ef040a5e1b464306c064c30b7","unresolved":true,"context_lines":[{"line_number":53,"context_line":"  lifecycle operations the deployment needs to handle."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"  This option is only relevant for nova-scheduler, nova-conductor, and"},{"line_number":56,"context_line":"  nova-compute."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* :oslo.config:option:`default_thread_pool_size`: Used by various concurrent"},{"line_number":59,"context_line":"  tasks in the service that are not categorized into the above pools."}],"source_content_type":"text/x-rst","patch_set":20,"id":"4a5a4dae_a6301aae","line":56,"in_reply_to":"3b2a920e_6f989713","updated":"2025-07-22 12:36:43.000000000","message":"It is relevant to those services that acts like RPC servers as oslo.messaging uses its own pool with this size to spawn the RPC request handlers. Actually nothing is changed with the handling of this variable as it is only read by oslo.messaging and this patch does not change oslo.messagin. Oslo.messaging handles the switch between eventlet and threading based on the fact is eventlet monkey patch is applied or not before the oslo.messaging lib is imported.\n\nI can emphasize that these are per service values, but that is true for all of our config options, they are per-service loaded and understood. (It is a misconception spreading from the devstack deployment model that we have some shared configuration across services. Both kolla and our new openstack-k8s-operators deployer has a separate, independent config file for each service it deploys)","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"80a35cb6e1075c35cdc28eb02ab118b8ffc8d3b2","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  lifecycle operations the deployment needs to handle."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"  This option is only relevant for nova-scheduler, nova-conductor, and"},{"line_number":56,"context_line":"  nova-compute."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* :oslo.config:option:`default_thread_pool_size`: Used by various concurrent"},{"line_number":59,"context_line":"  tasks in the service that are not categorized into the above pools."}],"source_content_type":"text/x-rst","patch_set":20,"id":"77aac449_f7f2c1ae","line":56,"in_reply_to":"4a5a4dae_a6301aae","updated":"2025-07-28 13:24:40.000000000","message":"that\u0027s right.","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4a9dac8bab14f85ce96fb579b57f282d3d262529","unresolved":true,"context_lines":[{"line_number":56,"context_line":"  nova-compute."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* :oslo.config:option:`default_thread_pool_size`: Used by various concurrent"},{"line_number":59,"context_line":"  tasks in the service that are not categorized into the above pools."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"When new work is submitted to any of these pools Nova logs the"},{"line_number":62,"context_line":"statistics of the pool (work executed, threads available, work queued, etc)."}],"source_content_type":"text/x-rst","patch_set":20,"id":"e1a240b5_4fc54587","line":59,"range":{"start_line":59,"start_character":23,"end_line":59,"end_character":69},"updated":"2025-07-22 09:16:24.000000000","message":"ie. if those are not RPC requests ?","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"80a35cb6e1075c35cdc28eb02ab118b8ffc8d3b2","unresolved":false,"context_lines":[{"line_number":56,"context_line":"  nova-compute."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* :oslo.config:option:`default_thread_pool_size`: Used by various concurrent"},{"line_number":59,"context_line":"  tasks in the service that are not categorized into the above pools."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"When new work is submitted to any of these pools Nova logs the"},{"line_number":62,"context_line":"statistics of the pool (work executed, threads available, work queued, etc)."}],"source_content_type":"text/x-rst","patch_set":20,"id":"0a076b53_b73ee12d","line":59,"range":{"start_line":59,"start_character":23,"end_line":59,"end_character":69},"in_reply_to":"5805d8e0_c045e6d8","updated":"2025-07-28 13:24:40.000000000","message":"ah you\u0027re right, this can be spawned by some RPC thread as well when incepting a request and that\u0027s not purely only for periodics or other long-running tasks.","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"626a13701d33491ef040a5e1b464306c064c30b7","unresolved":true,"context_lines":[{"line_number":56,"context_line":"  nova-compute."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* :oslo.config:option:`default_thread_pool_size`: Used by various concurrent"},{"line_number":59,"context_line":"  tasks in the service that are not categorized into the above pools."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"When new work is submitted to any of these pools Nova logs the"},{"line_number":62,"context_line":"statistics of the pool (work executed, threads available, work queued, etc)."}],"source_content_type":"text/x-rst","patch_set":20,"id":"5805d8e0_c045e6d8","line":59,"range":{"start_line":59,"start_character":23,"end_line":59,"end_character":69},"in_reply_to":"e1a240b5_4fc54587","updated":"2025-07-22 12:36:43.000000000","message":"All RPC request handler spawned by oslo.messaging into its own pool that is configured by the executor_thread_pool_size config option defined and read in oslo.messaging only.\n\nNova\u0027s default pool is used when utils.spawn() is called. It is called in various places for various reasons. It might be called at startup directly from the worker thread. It might be called from an RPC thread spawn by oslo.messaging. This is truely a catch all.","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4a9dac8bab14f85ce96fb579b57f282d3d262529","unresolved":true,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* :oslo.config:option:`default_thread_pool_size`: Used by various concurrent"},{"line_number":59,"context_line":"  tasks in the service that are not categorized into the above pools."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"When new work is submitted to any of these pools Nova logs the"},{"line_number":62,"context_line":"statistics of the pool (work executed, threads available, work queued, etc)."},{"line_number":63,"context_line":"This can be useful when fine tuning of the pool size is needed."}],"source_content_type":"text/x-rst","patch_set":20,"id":"c52e2988_da164e19","line":60,"updated":"2025-07-22 09:16:24.000000000","message":"you should say where the option is relevant","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"80a35cb6e1075c35cdc28eb02ab118b8ffc8d3b2","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* :oslo.config:option:`default_thread_pool_size`: Used by various concurrent"},{"line_number":59,"context_line":"  tasks in the service that are not categorized into the above pools."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"When new work is submitted to any of these pools Nova logs the"},{"line_number":62,"context_line":"statistics of the pool (work executed, threads available, work queued, etc)."},{"line_number":63,"context_line":"This can be useful when fine tuning of the pool size is needed."}],"source_content_type":"text/x-rst","patch_set":20,"id":"422987ab_92c80cbe","line":60,"in_reply_to":"2d4f0c16_550784c6","updated":"2025-07-28 13:24:40.000000000","message":"Fair, let\u0027s not bikeshed.","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"626a13701d33491ef040a5e1b464306c064c30b7","unresolved":true,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* :oslo.config:option:`default_thread_pool_size`: Used by various concurrent"},{"line_number":59,"context_line":"  tasks in the service that are not categorized into the above pools."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"When new work is submitted to any of these pools Nova logs the"},{"line_number":62,"context_line":"statistics of the pool (work executed, threads available, work queued, etc)."},{"line_number":63,"context_line":"This can be useful when fine tuning of the pool size is needed."}],"source_content_type":"text/x-rst","patch_set":20,"id":"2d4f0c16_550784c6","line":60,"in_reply_to":"c52e2988_da164e19","updated":"2025-07-22 12:36:43.000000000","message":"At least today:\n\n* nova-scheduler use the default pool for initialize instance info async at startup.\n* nova-conductor use this to pre-cache images\n* nova-compute use it for fetching network info or talking to libvirt\n\nI still reluctant to document this as this can change without ever updating this document so it will not be a good source of information.","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4a9dac8bab14f85ce96fb579b57f282d3d262529","unresolved":true,"context_lines":[{"line_number":58,"context_line":"* :oslo.config:option:`default_thread_pool_size`: Used by various concurrent"},{"line_number":59,"context_line":"  tasks in the service that are not categorized into the above pools."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"When new work is submitted to any of these pools Nova logs the"},{"line_number":62,"context_line":"statistics of the pool (work executed, threads available, work queued, etc)."},{"line_number":63,"context_line":"This can be useful when fine tuning of the pool size is needed."},{"line_number":64,"context_line":"The parameter :oslo.config:option:`thread_pool_statistic_period` defines how"}],"source_content_type":"text/x-rst","patch_set":20,"id":"0a84b919_2beda22c","line":61,"updated":"2025-07-22 09:16:24.000000000","message":"that\u0027s a new paragraph, maybe create a new section eg. \n\n```\nStatistics for both eventlet and threading modes\n------------------------------------------------\n```\n\n\nThat said, below you only tell about threading mode","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"626a13701d33491ef040a5e1b464306c064c30b7","unresolved":true,"context_lines":[{"line_number":58,"context_line":"* :oslo.config:option:`default_thread_pool_size`: Used by various concurrent"},{"line_number":59,"context_line":"  tasks in the service that are not categorized into the above pools."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"When new work is submitted to any of these pools Nova logs the"},{"line_number":62,"context_line":"statistics of the pool (work executed, threads available, work queued, etc)."},{"line_number":63,"context_line":"This can be useful when fine tuning of the pool size is needed."},{"line_number":64,"context_line":"The parameter :oslo.config:option:`thread_pool_statistic_period` defines how"}],"source_content_type":"text/x-rst","patch_set":20,"id":"b40090d3_fe423a22","line":61,"in_reply_to":"0a84b919_2beda22c","updated":"2025-07-22 12:36:43.000000000","message":"This section is more about how to ensure the pools are not exhausted by hanging / long running tasks. The stats printing is just a tool how to spot and troubleshoot it.\n\nI will add a new section.\n\n\u003e That said, below you only tell about threading mode\n\nThe stats printing works for both modes. I will clarify that here.","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"17897e99af9be706fc6508b5eba13aa7c1977528","unresolved":false,"context_lines":[{"line_number":58,"context_line":"* :oslo.config:option:`default_thread_pool_size`: Used by various concurrent"},{"line_number":59,"context_line":"  tasks in the service that are not categorized into the above pools."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"When new work is submitted to any of these pools Nova logs the"},{"line_number":62,"context_line":"statistics of the pool (work executed, threads available, work queued, etc)."},{"line_number":63,"context_line":"This can be useful when fine tuning of the pool size is needed."},{"line_number":64,"context_line":"The parameter :oslo.config:option:`thread_pool_statistic_period` defines how"}],"source_content_type":"text/x-rst","patch_set":20,"id":"22bd39cf_bedb7a91","line":61,"in_reply_to":"b40090d3_fe423a22","updated":"2025-07-24 14:00:42.000000000","message":"Done","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"626a13701d33491ef040a5e1b464306c064c30b7","unresolved":true,"context_lines":[{"line_number":62,"context_line":"statistics of the pool (work executed, threads available, work queued, etc)."},{"line_number":63,"context_line":"This can be useful when fine tuning of the pool size is needed."},{"line_number":64,"context_line":"The parameter :oslo.config:option:`thread_pool_statistic_period` defines how"},{"line_number":65,"context_line":"frequently such logging happens from a specific pool in seconds. The default"},{"line_number":66,"context_line":"60 seconds means that statistic will be logged from a pool maximum once every"},{"line_number":67,"context_line":"60 seconds. The value 0 means that logging happens every time work is submitted"},{"line_number":68,"context_line":"to the pool."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Threads from a pool are not cancellable once they are executing a task"},{"line_number":71,"context_line":"therefore it is important to ensure external dependencies cannot hold up a"},{"line_number":72,"context_line":"task execution indefinitely as that will lead to losing threads from the pool."}],"source_content_type":"text/x-rst","patch_set":20,"id":"c679355f_f8c794e2","line":69,"range":{"start_line":65,"start_character":65,"end_line":69,"end_character":0},"updated":"2025-07-22 12:36:43.000000000","message":"I need to adapt this to the new default.","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"17897e99af9be706fc6508b5eba13aa7c1977528","unresolved":false,"context_lines":[{"line_number":62,"context_line":"statistics of the pool (work executed, threads available, work queued, etc)."},{"line_number":63,"context_line":"This can be useful when fine tuning of the pool size is needed."},{"line_number":64,"context_line":"The parameter :oslo.config:option:`thread_pool_statistic_period` defines how"},{"line_number":65,"context_line":"frequently such logging happens from a specific pool in seconds. The default"},{"line_number":66,"context_line":"60 seconds means that statistic will be logged from a pool maximum once every"},{"line_number":67,"context_line":"60 seconds. The value 0 means that logging happens every time work is submitted"},{"line_number":68,"context_line":"to the pool."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Threads from a pool are not cancellable once they are executing a task"},{"line_number":71,"context_line":"therefore it is important to ensure external dependencies cannot hold up a"},{"line_number":72,"context_line":"task execution indefinitely as that will lead to losing threads from the pool."}],"source_content_type":"text/x-rst","patch_set":20,"id":"b64dd67e_74671be3","line":69,"range":{"start_line":65,"start_character":65,"end_line":69,"end_character":0},"in_reply_to":"c679355f_f8c794e2","updated":"2025-07-24 14:00:42.000000000","message":"Done","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"80a35cb6e1075c35cdc28eb02ab118b8ffc8d3b2","unresolved":false,"context_lines":[{"line_number":3,"context_line":""},{"line_number":4,"context_line":"For a long time nova services relied almost exclusively on the Eventlet library"},{"line_number":5,"context_line":"for processing multiple API requests, RPC requests and other tasks that needed"},{"line_number":6,"context_line":"concurrency. Since Eventlet is not expected to support the next major cPython"},{"line_number":7,"context_line":"version the OpenStack TC set a `goal`__ to replace Eventlet and therefore Nova"},{"line_number":8,"context_line":"is started transitioning its concurrency model to native threads. During this"},{"line_number":9,"context_line":"transition Nova maintains the Eventlet based concurrency mode while building"},{"line_number":10,"context_line":"up support for the native threading mode."}],"source_content_type":"text/x-rst","patch_set":23,"id":"d082b2b7_74a267e9","line":7,"range":{"start_line":6,"start_character":13,"end_line":7,"end_character":7},"updated":"2025-07-28 13:24:40.000000000","message":"++, I prefer that wording","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"80a35cb6e1075c35cdc28eb02ab118b8ffc8d3b2","unresolved":true,"context_lines":[{"line_number":4,"context_line":"For a long time nova services relied almost exclusively on the Eventlet library"},{"line_number":5,"context_line":"for processing multiple API requests, RPC requests and other tasks that needed"},{"line_number":6,"context_line":"concurrency. Since Eventlet is not expected to support the next major cPython"},{"line_number":7,"context_line":"version the OpenStack TC set a `goal`__ to replace Eventlet and therefore Nova"},{"line_number":8,"context_line":"is started transitioning its concurrency model to native threads. During this"},{"line_number":9,"context_line":"transition Nova maintains the Eventlet based concurrency mode while building"},{"line_number":10,"context_line":"up support for the native threading mode."}],"source_content_type":"text/x-rst","patch_set":23,"id":"f5e5b9ed_4d8ae6a6","line":7,"updated":"2025-07-28 13:24:40.000000000","message":"has set ?\n\n(well, I\u0027m not an English native speaker and I don\u0027t interact with AI tools to correct my spellings, so I could be wrong)","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c70eda40d4f4ec34e36587e83527be42e9433c7b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"For a long time nova services relied almost exclusively on the Eventlet library"},{"line_number":5,"context_line":"for processing multiple API requests, RPC requests and other tasks that needed"},{"line_number":6,"context_line":"concurrency. Since Eventlet is not expected to support the next major cPython"},{"line_number":7,"context_line":"version the OpenStack TC set a `goal`__ to replace Eventlet and therefore Nova"},{"line_number":8,"context_line":"is started transitioning its concurrency model to native threads. During this"},{"line_number":9,"context_line":"transition Nova maintains the Eventlet based concurrency mode while building"},{"line_number":10,"context_line":"up support for the native threading mode."}],"source_content_type":"text/x-rst","patch_set":23,"id":"85e6dbb5_a613c528","line":7,"in_reply_to":"4062aee0_2225928e","updated":"2025-07-29 15:02:20.000000000","message":"\"set a goal\" sounds fine to me here, as does \"has set\". But below \"is started\" is not right.","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"12f089198125032f7db8bbe600ee41492de97455","unresolved":false,"context_lines":[{"line_number":4,"context_line":"For a long time nova services relied almost exclusively on the Eventlet library"},{"line_number":5,"context_line":"for processing multiple API requests, RPC requests and other tasks that needed"},{"line_number":6,"context_line":"concurrency. Since Eventlet is not expected to support the next major cPython"},{"line_number":7,"context_line":"version the OpenStack TC set a `goal`__ to replace Eventlet and therefore Nova"},{"line_number":8,"context_line":"is started transitioning its concurrency model to native threads. During this"},{"line_number":9,"context_line":"transition Nova maintains the Eventlet based concurrency mode while building"},{"line_number":10,"context_line":"up support for the native threading mode."}],"source_content_type":"text/x-rst","patch_set":23,"id":"4062aee0_2225928e","line":7,"in_reply_to":"f5e5b9ed_4d8ae6a6","updated":"2025-07-29 08:05:42.000000000","message":"Me neither :) Probably \"has set\" has the meaning of it was done *and* it affects the the present and the future heavily. So based on that \"has set\" is a better wording. But I won\u0027t respin just for this.","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c70eda40d4f4ec34e36587e83527be42e9433c7b","unresolved":true,"context_lines":[{"line_number":5,"context_line":"for processing multiple API requests, RPC requests and other tasks that needed"},{"line_number":6,"context_line":"concurrency. Since Eventlet is not expected to support the next major cPython"},{"line_number":7,"context_line":"version the OpenStack TC set a `goal`__ to replace Eventlet and therefore Nova"},{"line_number":8,"context_line":"is started transitioning its concurrency model to native threads. During this"},{"line_number":9,"context_line":"transition Nova maintains the Eventlet based concurrency mode while building"},{"line_number":10,"context_line":"up support for the native threading mode."},{"line_number":11,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"b8105efd_dcd84143","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":2},"updated":"2025-07-29 15:02:20.000000000","message":"\"has started\"","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"164b163508e70bde7b14aa2b726f51cd730a2b70","unresolved":false,"context_lines":[{"line_number":5,"context_line":"for processing multiple API requests, RPC requests and other tasks that needed"},{"line_number":6,"context_line":"concurrency. Since Eventlet is not expected to support the next major cPython"},{"line_number":7,"context_line":"version the OpenStack TC set a `goal`__ to replace Eventlet and therefore Nova"},{"line_number":8,"context_line":"is started transitioning its concurrency model to native threads. During this"},{"line_number":9,"context_line":"transition Nova maintains the Eventlet based concurrency mode while building"},{"line_number":10,"context_line":"up support for the native threading mode."},{"line_number":11,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"92870a3a_7ecd8b42","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":2},"in_reply_to":"b8105efd_dcd84143","updated":"2025-07-30 19:28:52.000000000","message":"Done","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"80a35cb6e1075c35cdc28eb02ab118b8ffc8d3b2","unresolved":false,"context_lines":[{"line_number":25,"context_line":".. note::"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"   Since nova 32.0.0 (2025.2 Flamingo) the nova-scheduler can be switched to"},{"line_number":28,"context_line":"   native threading mode."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Tunables for the native threading mode"}],"source_content_type":"text/x-rst","patch_set":23,"id":"c5f9ad0e_13367e07","line":28,"updated":"2025-07-28 13:24:40.000000000","message":"++","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c70eda40d4f4ec34e36587e83527be42e9433c7b","unresolved":true,"context_lines":[{"line_number":33,"context_line":"As native threads are more expensive resources than greenthreads Nova provides"},{"line_number":34,"context_line":"a set of configuration options to allow fine tuning the deployment based on"},{"line_number":35,"context_line":"load and resource constraints. The default values are selected to support a"},{"line_number":36,"context_line":"basic,small deployment without consuming a lot more memory resources, as the"},{"line_number":37,"context_line":"legacy Eventlet mode. Increasing the size of the below thread pools means that"},{"line_number":38,"context_line":"the given service will consume more memory but will also allow more tasks to be"},{"line_number":39,"context_line":"executed concurrently."}],"source_content_type":"text/x-rst","patch_set":23,"id":"745b896e_ad0e3ad7","line":36,"range":{"start_line":36,"start_character":41,"end_line":36,"end_character":46},"updated":"2025-07-29 15:02:20.000000000","message":"\"substantially\" would sound better here.","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c70eda40d4f4ec34e36587e83527be42e9433c7b","unresolved":true,"context_lines":[{"line_number":33,"context_line":"As native threads are more expensive resources than greenthreads Nova provides"},{"line_number":34,"context_line":"a set of configuration options to allow fine tuning the deployment based on"},{"line_number":35,"context_line":"load and resource constraints. The default values are selected to support a"},{"line_number":36,"context_line":"basic,small deployment without consuming a lot more memory resources, as the"},{"line_number":37,"context_line":"legacy Eventlet mode. Increasing the size of the below thread pools means that"},{"line_number":38,"context_line":"the given service will consume more memory but will also allow more tasks to be"},{"line_number":39,"context_line":"executed concurrently."}],"source_content_type":"text/x-rst","patch_set":23,"id":"d537663e_eb5fa79d","line":36,"range":{"start_line":36,"start_character":68,"end_line":36,"end_character":72},"updated":"2025-07-29 15:02:20.000000000","message":"\"than the legacy\"","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c70eda40d4f4ec34e36587e83527be42e9433c7b","unresolved":true,"context_lines":[{"line_number":33,"context_line":"As native threads are more expensive resources than greenthreads Nova provides"},{"line_number":34,"context_line":"a set of configuration options to allow fine tuning the deployment based on"},{"line_number":35,"context_line":"load and resource constraints. The default values are selected to support a"},{"line_number":36,"context_line":"basic,small deployment without consuming a lot more memory resources, as the"},{"line_number":37,"context_line":"legacy Eventlet mode. Increasing the size of the below thread pools means that"},{"line_number":38,"context_line":"the given service will consume more memory but will also allow more tasks to be"},{"line_number":39,"context_line":"executed concurrently."}],"source_content_type":"text/x-rst","patch_set":23,"id":"91258e54_cb656634","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":11},"updated":"2025-07-29 15:02:20.000000000","message":"need a space after the comma here","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"164b163508e70bde7b14aa2b726f51cd730a2b70","unresolved":false,"context_lines":[{"line_number":33,"context_line":"As native threads are more expensive resources than greenthreads Nova provides"},{"line_number":34,"context_line":"a set of configuration options to allow fine tuning the deployment based on"},{"line_number":35,"context_line":"load and resource constraints. The default values are selected to support a"},{"line_number":36,"context_line":"basic,small deployment without consuming a lot more memory resources, as the"},{"line_number":37,"context_line":"legacy Eventlet mode. Increasing the size of the below thread pools means that"},{"line_number":38,"context_line":"the given service will consume more memory but will also allow more tasks to be"},{"line_number":39,"context_line":"executed concurrently."}],"source_content_type":"text/x-rst","patch_set":23,"id":"4f406574_42a14f5a","line":36,"range":{"start_line":36,"start_character":41,"end_line":36,"end_character":46},"in_reply_to":"745b896e_ad0e3ad7","updated":"2025-07-30 19:28:52.000000000","message":"Done","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"164b163508e70bde7b14aa2b726f51cd730a2b70","unresolved":false,"context_lines":[{"line_number":33,"context_line":"As native threads are more expensive resources than greenthreads Nova provides"},{"line_number":34,"context_line":"a set of configuration options to allow fine tuning the deployment based on"},{"line_number":35,"context_line":"load and resource constraints. The default values are selected to support a"},{"line_number":36,"context_line":"basic,small deployment without consuming a lot more memory resources, as the"},{"line_number":37,"context_line":"legacy Eventlet mode. Increasing the size of the below thread pools means that"},{"line_number":38,"context_line":"the given service will consume more memory but will also allow more tasks to be"},{"line_number":39,"context_line":"executed concurrently."}],"source_content_type":"text/x-rst","patch_set":23,"id":"dd9920a5_660b2566","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":11},"in_reply_to":"91258e54_cb656634","updated":"2025-07-30 19:28:52.000000000","message":"Done","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"164b163508e70bde7b14aa2b726f51cd730a2b70","unresolved":false,"context_lines":[{"line_number":33,"context_line":"As native threads are more expensive resources than greenthreads Nova provides"},{"line_number":34,"context_line":"a set of configuration options to allow fine tuning the deployment based on"},{"line_number":35,"context_line":"load and resource constraints. The default values are selected to support a"},{"line_number":36,"context_line":"basic,small deployment without consuming a lot more memory resources, as the"},{"line_number":37,"context_line":"legacy Eventlet mode. Increasing the size of the below thread pools means that"},{"line_number":38,"context_line":"the given service will consume more memory but will also allow more tasks to be"},{"line_number":39,"context_line":"executed concurrently."}],"source_content_type":"text/x-rst","patch_set":23,"id":"c0374806_4e66b24a","line":36,"range":{"start_line":36,"start_character":68,"end_line":36,"end_character":72},"in_reply_to":"d537663e_eb5fa79d","updated":"2025-07-30 19:28:52.000000000","message":"Done","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c70eda40d4f4ec34e36587e83527be42e9433c7b","unresolved":true,"context_lines":[{"line_number":49,"context_line":"  to be increased."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"  This option is only relevant for nova-api, nova-metadata, nova-scheduler, and"},{"line_number":52,"context_line":"  nova-conductor as these are the services today doing cross cell operations."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"* :oslo.config:option:`executor_thread_pool_size`: Used to handle incoming RPC"},{"line_number":55,"context_line":"  requests. The size of the pool needs to be adjusted based on the number of"}],"source_content_type":"text/x-rst","patch_set":23,"id":"f4d6b943_1c02c718","line":52,"range":{"start_line":52,"start_character":43,"end_line":52,"end_character":54},"updated":"2025-07-29 15:02:20.000000000","message":"\"today doing\" sounds odd. I would just say \"doing\" here.","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"164b163508e70bde7b14aa2b726f51cd730a2b70","unresolved":false,"context_lines":[{"line_number":49,"context_line":"  to be increased."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"  This option is only relevant for nova-api, nova-metadata, nova-scheduler, and"},{"line_number":52,"context_line":"  nova-conductor as these are the services today doing cross cell operations."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"* :oslo.config:option:`executor_thread_pool_size`: Used to handle incoming RPC"},{"line_number":55,"context_line":"  requests. The size of the pool needs to be adjusted based on the number of"}],"source_content_type":"text/x-rst","patch_set":23,"id":"81463265_8e9a0098","line":52,"range":{"start_line":52,"start_character":43,"end_line":52,"end_character":54},"in_reply_to":"f4d6b943_1c02c718","updated":"2025-07-30 19:28:52.000000000","message":"Done","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c70eda40d4f4ec34e36587e83527be42e9433c7b","unresolved":true,"context_lines":[{"line_number":57,"context_line":"  lifecycle operations the deployment needs to handle."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"  This option is only relevant for nova-scheduler, nova-conductor, and"},{"line_number":60,"context_line":"  nova-compute as these are the service acting as RPC servers."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"* :oslo.config:option:`default_thread_pool_size`: Used by various concurrent"},{"line_number":63,"context_line":"  tasks in the service that are not categorized into the above pools."}],"source_content_type":"text/x-rst","patch_set":23,"id":"b025a9de_40ef098c","line":60,"range":{"start_line":60,"start_character":32,"end_line":60,"end_character":39},"updated":"2025-07-29 15:02:20.000000000","message":"\"services\"\n\nMight also want to say something like \"Services with many more inbound requests will need larger pools. For example, a single conductor serves requests from many computes as well as the scheduler. A compute node only serves requests from the API for lifecycle operations and other computes during migrations.\"","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"164b163508e70bde7b14aa2b726f51cd730a2b70","unresolved":false,"context_lines":[{"line_number":57,"context_line":"  lifecycle operations the deployment needs to handle."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"  This option is only relevant for nova-scheduler, nova-conductor, and"},{"line_number":60,"context_line":"  nova-compute as these are the service acting as RPC servers."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"* :oslo.config:option:`default_thread_pool_size`: Used by various concurrent"},{"line_number":63,"context_line":"  tasks in the service that are not categorized into the above pools."}],"source_content_type":"text/x-rst","patch_set":23,"id":"63af6062_465103c1","line":60,"range":{"start_line":60,"start_character":32,"end_line":60,"end_character":39},"in_reply_to":"b025a9de_40ef098c","updated":"2025-07-30 19:28:52.000000000","message":"Done","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"80a35cb6e1075c35cdc28eb02ab118b8ffc8d3b2","unresolved":false,"context_lines":[{"line_number":62,"context_line":"* :oslo.config:option:`default_thread_pool_size`: Used by various concurrent"},{"line_number":63,"context_line":"  tasks in the service that are not categorized into the above pools."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"  This option is relevant to every nova service using ``nova.utils.spawn()``."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Seeing the usage of the pools"},{"line_number":68,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":23,"id":"4160775a_5921de26","line":65,"updated":"2025-07-28 13:24:40.000000000","message":"thanks for the addition, it clarifies when it\u0027s used.","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c70eda40d4f4ec34e36587e83527be42e9433c7b","unresolved":true,"context_lines":[{"line_number":73,"context_line":"This can be useful when fine tuning of the pool size is needed."},{"line_number":74,"context_line":"The parameter :oslo.config:option:`thread_pool_statistic_period` defines how"},{"line_number":75,"context_line":"frequently such logging happens from a specific pool in seconds. A value of"},{"line_number":76,"context_line":"60 seconds means that statistic will be logged from a pool maximum once every"},{"line_number":77,"context_line":"60 seconds. The value 0 means that logging happens every time work is submitted"},{"line_number":78,"context_line":"to the pool. The default value is -1 meaning that the statistic logging is"},{"line_number":79,"context_line":"disabled."}],"source_content_type":"text/x-rst","patch_set":23,"id":"67dbbef0_46b01242","line":76,"range":{"start_line":76,"start_character":22,"end_line":76,"end_character":31},"updated":"2025-07-29 15:02:20.000000000","message":"I would say \"stats\" here and below (both shortened and pluralized)","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"164b163508e70bde7b14aa2b726f51cd730a2b70","unresolved":false,"context_lines":[{"line_number":73,"context_line":"This can be useful when fine tuning of the pool size is needed."},{"line_number":74,"context_line":"The parameter :oslo.config:option:`thread_pool_statistic_period` defines how"},{"line_number":75,"context_line":"frequently such logging happens from a specific pool in seconds. A value of"},{"line_number":76,"context_line":"60 seconds means that statistic will be logged from a pool maximum once every"},{"line_number":77,"context_line":"60 seconds. The value 0 means that logging happens every time work is submitted"},{"line_number":78,"context_line":"to the pool. The default value is -1 meaning that the statistic logging is"},{"line_number":79,"context_line":"disabled."}],"source_content_type":"text/x-rst","patch_set":23,"id":"d8f8a598_337797c5","line":76,"range":{"start_line":76,"start_character":22,"end_line":76,"end_character":31},"in_reply_to":"67dbbef0_46b01242","updated":"2025-07-30 19:28:52.000000000","message":"Done","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"80a35cb6e1075c35cdc28eb02ab118b8ffc8d3b2","unresolved":false,"context_lines":[{"line_number":76,"context_line":"60 seconds means that statistic will be logged from a pool maximum once every"},{"line_number":77,"context_line":"60 seconds. The value 0 means that logging happens every time work is submitted"},{"line_number":78,"context_line":"to the pool. The default value is -1 meaning that the statistic logging is"},{"line_number":79,"context_line":"disabled."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Preventing hanging threads"},{"line_number":82,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":23,"id":"4014a92b_a7d444e2","line":79,"updated":"2025-07-28 13:24:40.000000000","message":"++","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"80a35cb6e1075c35cdc28eb02ab118b8ffc8d3b2","unresolved":false,"context_lines":[{"line_number":79,"context_line":"disabled."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Preventing hanging threads"},{"line_number":82,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Threads from a pool are not cancellable once they are executing a task"},{"line_number":85,"context_line":"therefore it is important to ensure external dependencies cannot hold up a"}],"source_content_type":"text/x-rst","patch_set":23,"id":"2d4f3267_ad87de8c","line":82,"updated":"2025-07-28 13:24:40.000000000","message":"++","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c70eda40d4f4ec34e36587e83527be42e9433c7b","unresolved":true,"context_lines":[{"line_number":81,"context_line":"Preventing hanging threads"},{"line_number":82,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Threads from a pool are not cancellable once they are executing a task"},{"line_number":85,"context_line":"therefore it is important to ensure external dependencies cannot hold up a"},{"line_number":86,"context_line":"task execution indefinitely as that will lead to losing threads from the pool."},{"line_number":87,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"db12d9b4_ebd51fb7","line":84,"range":{"start_line":84,"start_character":66,"end_line":84,"end_character":70},"updated":"2025-07-29 15:02:20.000000000","message":"\"task,\"","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"164b163508e70bde7b14aa2b726f51cd730a2b70","unresolved":false,"context_lines":[{"line_number":81,"context_line":"Preventing hanging threads"},{"line_number":82,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Threads from a pool are not cancellable once they are executing a task"},{"line_number":85,"context_line":"therefore it is important to ensure external dependencies cannot hold up a"},{"line_number":86,"context_line":"task execution indefinitely as that will lead to losing threads from the pool."},{"line_number":87,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"d312a9a9_c4e7ddac","line":84,"range":{"start_line":84,"start_character":66,"end_line":84,"end_character":70},"in_reply_to":"db12d9b4_ebd51fb7","updated":"2025-07-30 19:28:52.000000000","message":"Done","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c70eda40d4f4ec34e36587e83527be42e9433c7b","unresolved":true,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Threads from a pool are not cancellable once they are executing a task"},{"line_number":85,"context_line":"therefore it is important to ensure external dependencies cannot hold up a"},{"line_number":86,"context_line":"task execution indefinitely as that will lead to losing threads from the pool."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Nova\u0027s RPC interface already uses proper timeout handling to avoid hanging"},{"line_number":89,"context_line":"threads. But adding timeout handling to the Nova\u0027s database interface is"}],"source_content_type":"text/x-rst","patch_set":23,"id":"30023030_33f8a4bd","line":86,"range":{"start_line":86,"start_character":49,"end_line":86,"end_character":77},"updated":"2025-07-29 15:02:20.000000000","message":"I don\u0027t think \"losing\" is the right thing to say here. \"Leaking\" maybe but that still doesn\u0027t mean much to a non-programmer I imagine. Can we say something like just \"blocking threads from doing useful work\" ?","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"164b163508e70bde7b14aa2b726f51cd730a2b70","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Threads from a pool are not cancellable once they are executing a task"},{"line_number":85,"context_line":"therefore it is important to ensure external dependencies cannot hold up a"},{"line_number":86,"context_line":"task execution indefinitely as that will lead to losing threads from the pool."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Nova\u0027s RPC interface already uses proper timeout handling to avoid hanging"},{"line_number":89,"context_line":"threads. But adding timeout handling to the Nova\u0027s database interface is"}],"source_content_type":"text/x-rst","patch_set":23,"id":"651de76c_916421a7","line":86,"range":{"start_line":86,"start_character":49,"end_line":86,"end_character":77},"in_reply_to":"30023030_33f8a4bd","updated":"2025-07-30 19:28:52.000000000","message":"I rephrased it from the pool perspective.","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c70eda40d4f4ec34e36587e83527be42e9433c7b","unresolved":true,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"For mysql-server the `max_execution_time`__ configuration option can be used"},{"line_number":93,"context_line":"to limit the execution time of a database query on the server side. Similar"},{"line_number":94,"context_line":"options exists for other database servers."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":".. __: https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_max_execution_time"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"b7d15c85_c55ccd54","line":94,"range":{"start_line":94,"start_character":8,"end_line":94,"end_character":14},"updated":"2025-07-29 15:02:20.000000000","message":"\"exist\"","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"164b163508e70bde7b14aa2b726f51cd730a2b70","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"For mysql-server the `max_execution_time`__ configuration option can be used"},{"line_number":93,"context_line":"to limit the execution time of a database query on the server side. Similar"},{"line_number":94,"context_line":"options exists for other database servers."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":".. __: https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_max_execution_time"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"d619c806_aa7761c3","line":94,"range":{"start_line":94,"start_character":8,"end_line":94,"end_character":14},"in_reply_to":"b7d15c85_c55ccd54","updated":"2025-07-30 19:28:52.000000000","message":"Done","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c42140eda669ea2645dced7468aa1ea2118ec205","unresolved":false,"context_lines":[{"line_number":36,"context_line":"basic, small deployment without consuming substantially  more memory resources,"},{"line_number":37,"context_line":"than the legacy Eventlet mode. Increasing the size of the below thread pools"},{"line_number":38,"context_line":"means that the given service will consume more memory but will also allow more"},{"line_number":39,"context_line":"tasks to be executed concurrently."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"* :oslo.config:option:`cell_worker_thread_pool_size`: Used to execute tasks"},{"line_number":42,"context_line":"  across all the cells within the deployment."}],"source_content_type":"text/x-rst","patch_set":25,"id":"cb46f96d_129d2a9a","line":39,"updated":"2025-07-30 19:45:31.000000000","message":"as an aside, thread will likely also be cheaper then just running more schedulers or conductors in something like k8s or increasing the workers too.\n\nso while it may be slightly more expensive then greethread i actually think we are are gong to com out of the move to threads with something that si faster overall\nbecause we are leveraging thing like db level timeout and other features more natively.","commit_id":"6e09ea7f2fd9e01f4480f6bb4766e87bf4cfad4e"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"2034714714b373e632e247b9737f236877665e71","unresolved":true,"context_lines":[{"line_number":74,"context_line":"This can be useful when fine tuning of the pool size is needed."},{"line_number":75,"context_line":"The parameter :oslo.config:option:`thread_pool_statistic_period` defines how"},{"line_number":76,"context_line":"frequently such logging happens from a specific pool in seconds. A value of"},{"line_number":77,"context_line":"60 seconds means that stasts will be logged from a pool maximum once every"},{"line_number":78,"context_line":"60 seconds. The value 0 means that logging happens every time work is submitted"},{"line_number":79,"context_line":"to the pool. The default value is -1 meaning that the stats logging is"},{"line_number":80,"context_line":"disabled."}],"source_content_type":"text/x-rst","patch_set":25,"id":"d52f09d8_05a63e75","line":77,"range":{"start_line":77,"start_character":22,"end_line":77,"end_character":28},"updated":"2025-07-31 23:28:50.000000000","message":"stats","commit_id":"6e09ea7f2fd9e01f4480f6bb4766e87bf4cfad4e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"08a5d91fbcbfa2b51cad4a1a3f2f1c888d080be9","unresolved":false,"context_lines":[{"line_number":74,"context_line":"This can be useful when fine tuning of the pool size is needed."},{"line_number":75,"context_line":"The parameter :oslo.config:option:`thread_pool_statistic_period` defines how"},{"line_number":76,"context_line":"frequently such logging happens from a specific pool in seconds. A value of"},{"line_number":77,"context_line":"60 seconds means that stasts will be logged from a pool maximum once every"},{"line_number":78,"context_line":"60 seconds. The value 0 means that logging happens every time work is submitted"},{"line_number":79,"context_line":"to the pool. The default value is -1 meaning that the stats logging is"},{"line_number":80,"context_line":"disabled."}],"source_content_type":"text/x-rst","patch_set":25,"id":"d798151c_ccbb2f7b","line":77,"range":{"start_line":77,"start_character":22,"end_line":77,"end_character":28},"in_reply_to":"d52f09d8_05a63e75","updated":"2025-08-01 10:18:17.000000000","message":"Done","commit_id":"6e09ea7f2fd9e01f4480f6bb4766e87bf4cfad4e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a98da8e25f3b03ca139c7bdb788c9776f5b63270","unresolved":true,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Threads from a pool are not cancellable once they are executing a task,"},{"line_number":86,"context_line":"therefore it is important to ensure external dependencies cannot hold up a"},{"line_number":87,"context_line":"task execution indefinitely as that will lead to having less threads in the"},{"line_number":88,"context_line":"pool available for incoming work and therefore reduced overall capacity."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Nova\u0027s RPC interface already uses proper timeout handling to avoid hanging"}],"source_content_type":"text/x-rst","patch_set":25,"id":"47caafd3_cb04fd57","line":87,"range":{"start_line":87,"start_character":56,"end_line":87,"end_character":60},"updated":"2025-07-31 14:39:50.000000000","message":"This is sometimes contentious but \"less\" is for an uncountable thing and \"fewer\" is for a countable quantity.","commit_id":"6e09ea7f2fd9e01f4480f6bb4766e87bf4cfad4e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"08a5d91fbcbfa2b51cad4a1a3f2f1c888d080be9","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Threads from a pool are not cancellable once they are executing a task,"},{"line_number":86,"context_line":"therefore it is important to ensure external dependencies cannot hold up a"},{"line_number":87,"context_line":"task execution indefinitely as that will lead to having less threads in the"},{"line_number":88,"context_line":"pool available for incoming work and therefore reduced overall capacity."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Nova\u0027s RPC interface already uses proper timeout handling to avoid hanging"}],"source_content_type":"text/x-rst","patch_set":25,"id":"a717efc7_598a0859","line":87,"range":{"start_line":87,"start_character":56,"end_line":87,"end_character":60},"in_reply_to":"47caafd3_cb04fd57","updated":"2025-08-01 10:18:17.000000000","message":"Done","commit_id":"6e09ea7f2fd9e01f4480f6bb4766e87bf4cfad4e"}],"doc/source/admin/index.rst":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4a9dac8bab14f85ce96fb579b57f282d3d262529","unresolved":false,"context_lines":[{"line_number":106,"context_line":"  WSGI container instead of the baked-in eventlet web server."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"* :doc:`Nova service concurrency \u003c/admin/concurrency\u003e`: Consideration on how to"},{"line_number":109,"context_line":"  use and tune Nova services in threading mode."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":".. toctree::"},{"line_number":112,"context_line":"   :maxdepth: 2"}],"source_content_type":"text/x-rst","patch_set":20,"id":"53ada5b4_5ce5628e","line":109,"range":{"start_line":109,"start_character":1,"end_line":109,"end_character":15},"updated":"2025-07-22 09:16:24.000000000","message":"one-word synonym : configure 😄","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"626a13701d33491ef040a5e1b464306c064c30b7","unresolved":false,"context_lines":[{"line_number":106,"context_line":"  WSGI container instead of the baked-in eventlet web server."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"* :doc:`Nova service concurrency \u003c/admin/concurrency\u003e`: Consideration on how to"},{"line_number":109,"context_line":"  use and tune Nova services in threading mode."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":".. toctree::"},{"line_number":112,"context_line":"   :maxdepth: 2"}],"source_content_type":"text/x-rst","patch_set":20,"id":"d600aba8_83e740d6","line":109,"range":{"start_line":109,"start_character":1,"end_line":109,"end_character":15},"in_reply_to":"53ada5b4_5ce5628e","updated":"2025-07-22 12:36:43.000000000","message":"My intention here with the wording to say that you configure value X and then you measure and based on the measurement you re-configure the value and you repeat this until you get a satisfying measurement.","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"80a35cb6e1075c35cdc28eb02ab118b8ffc8d3b2","unresolved":false,"context_lines":[{"line_number":106,"context_line":"  WSGI container instead of the baked-in eventlet web server."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"* :doc:`Nova service concurrency \u003c/admin/concurrency\u003e`: Consideration on how to"},{"line_number":109,"context_line":"  use and tune Nova services in threading mode."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":".. toctree::"},{"line_number":112,"context_line":"   :maxdepth: 2"}],"source_content_type":"text/x-rst","patch_set":20,"id":"0fc58392_35da7168","line":109,"range":{"start_line":109,"start_character":1,"end_line":109,"end_character":15},"in_reply_to":"d600aba8_83e740d6","updated":"2025-07-28 13:24:40.000000000","message":"Cool with me, was just a femtonit.","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c70eda40d4f4ec34e36587e83527be42e9433c7b","unresolved":true,"context_lines":[{"line_number":105,"context_line":"* :doc:`Running nova-api on wsgi \u003c/user/wsgi\u003e`: Considerations for using a real"},{"line_number":106,"context_line":"  WSGI container instead of the baked-in eventlet web server."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"* :doc:`Nova service concurrency \u003c/admin/concurrency\u003e`: Consideration on how to"},{"line_number":109,"context_line":"  use and tune Nova services in threading mode."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":".. toctree::"}],"source_content_type":"text/x-rst","patch_set":23,"id":"2131b474_38a8b5c5","line":108,"range":{"start_line":108,"start_character":56,"end_line":108,"end_character":69},"updated":"2025-07-29 15:02:20.000000000","message":"\"Considerations\"","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"164b163508e70bde7b14aa2b726f51cd730a2b70","unresolved":false,"context_lines":[{"line_number":105,"context_line":"* :doc:`Running nova-api on wsgi \u003c/user/wsgi\u003e`: Considerations for using a real"},{"line_number":106,"context_line":"  WSGI container instead of the baked-in eventlet web server."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"* :doc:`Nova service concurrency \u003c/admin/concurrency\u003e`: Consideration on how to"},{"line_number":109,"context_line":"  use and tune Nova services in threading mode."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":".. toctree::"}],"source_content_type":"text/x-rst","patch_set":23,"id":"d06f5c6c_a0c4bf8a","line":108,"range":{"start_line":108,"start_character":56,"end_line":108,"end_character":69},"in_reply_to":"2131b474_38a8b5c5","updated":"2025-07-30 19:28:52.000000000","message":"Done","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"2034714714b373e632e247b9737f236877665e71","unresolved":true,"context_lines":[{"line_number":106,"context_line":"  WSGI container instead of the baked-in eventlet web server."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"* :doc:`Nova service concurrency \u003c/admin/concurrency\u003e`: Considerations on how"},{"line_number":109,"context_line":"* to use and tune Nova services in threading mode."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":".. toctree::"},{"line_number":112,"context_line":"   :maxdepth: 2"}],"source_content_type":"text/x-rst","patch_set":25,"id":"c8ada72b_f9d8a7f3","line":109,"range":{"start_line":109,"start_character":0,"end_line":109,"end_character":1},"updated":"2025-07-31 23:28:50.000000000","message":"Sorry for noticing this but the extra bullet point makes the doc render weirdly, for example:\n\n* Nova service concurrency: Considerations on how\n\n* to use and tune Nova services in threading mode.","commit_id":"6e09ea7f2fd9e01f4480f6bb4766e87bf4cfad4e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"08a5d91fbcbfa2b51cad4a1a3f2f1c888d080be9","unresolved":false,"context_lines":[{"line_number":106,"context_line":"  WSGI container instead of the baked-in eventlet web server."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"* :doc:`Nova service concurrency \u003c/admin/concurrency\u003e`: Considerations on how"},{"line_number":109,"context_line":"* to use and tune Nova services in threading mode."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":".. toctree::"},{"line_number":112,"context_line":"   :maxdepth: 2"}],"source_content_type":"text/x-rst","patch_set":25,"id":"68d25499_ec51aa5a","line":109,"range":{"start_line":109,"start_character":0,"end_line":109,"end_character":1},"in_reply_to":"c8ada72b_f9d8a7f3","updated":"2025-08-01 10:18:17.000000000","message":"yeah I (my IDE) broke it when fixed the typo in PS23.\nFixed now.","commit_id":"6e09ea7f2fd9e01f4480f6bb4766e87bf4cfad4e"}],"doc/source/reference/threading.rst":[{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"595a2ea829c0262f791596c0f2ce5d6e029ec1e8","unresolved":true,"context_lines":[{"line_number":61,"context_line":"Native threading"},{"line_number":62,"context_line":"----------------"},{"line_number":63,"context_line":"Since the Flamingo release OpenStack started to transition away form"},{"line_number":64,"context_line":"``eventlet``. During the this transition Nova maintains support for running"},{"line_number":65,"context_line":"services with ``eventlet`` while working on to add support running services"},{"line_number":66,"context_line":"with ``threading``."},{"line_number":67,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5ca84c43_ea6d1ac1","line":64,"range":{"start_line":64,"start_character":21,"end_line":64,"end_character":25},"updated":"2025-06-11 10:32:29.000000000","message":"nit","commit_id":"3622f2246fe4651cb8f5dc1c3981ee1be2a9d72e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c930c2442600c90680bbfeba2050e8efb1a1501b","unresolved":false,"context_lines":[{"line_number":61,"context_line":"Native threading"},{"line_number":62,"context_line":"----------------"},{"line_number":63,"context_line":"Since the Flamingo release OpenStack started to transition away form"},{"line_number":64,"context_line":"``eventlet``. During the this transition Nova maintains support for running"},{"line_number":65,"context_line":"services with ``eventlet`` while working on to add support running services"},{"line_number":66,"context_line":"with ``threading``."},{"line_number":67,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"c6f0387a_78c58829","line":64,"range":{"start_line":64,"start_character":21,"end_line":64,"end_character":25},"in_reply_to":"5ca84c43_ea6d1ac1","updated":"2025-06-13 14:18:34.000000000","message":"Done","commit_id":"3622f2246fe4651cb8f5dc1c3981ee1be2a9d72e"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"595a2ea829c0262f791596c0f2ce5d6e029ec1e8","unresolved":true,"context_lines":[{"line_number":62,"context_line":"----------------"},{"line_number":63,"context_line":"Since the Flamingo release OpenStack started to transition away form"},{"line_number":64,"context_line":"``eventlet``. During the this transition Nova maintains support for running"},{"line_number":65,"context_line":"services with ``eventlet`` while working on to add support running services"},{"line_number":66,"context_line":"with ``threading``."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"To support both modes with the same codebase Nova started using the the"},{"line_number":69,"context_line":"`futurist`_ library. In threading mode ``futurist.ThreadPoolsExecutors`` are"}],"source_content_type":"text/x-rst","patch_set":9,"id":"533c7ded_59f8a758","line":66,"range":{"start_line":65,"start_character":27,"end_line":66,"end_character":18},"updated":"2025-06-11 10:32:29.000000000","message":"Suggestion: \"while working to add support for running services with ``threading``.\"","commit_id":"3622f2246fe4651cb8f5dc1c3981ee1be2a9d72e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c930c2442600c90680bbfeba2050e8efb1a1501b","unresolved":false,"context_lines":[{"line_number":62,"context_line":"----------------"},{"line_number":63,"context_line":"Since the Flamingo release OpenStack started to transition away form"},{"line_number":64,"context_line":"``eventlet``. During the this transition Nova maintains support for running"},{"line_number":65,"context_line":"services with ``eventlet`` while working on to add support running services"},{"line_number":66,"context_line":"with ``threading``."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"To support both modes with the same codebase Nova started using the the"},{"line_number":69,"context_line":"`futurist`_ library. In threading mode ``futurist.ThreadPoolsExecutors`` are"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7cc21e0e_94a655f6","line":66,"range":{"start_line":65,"start_character":27,"end_line":66,"end_character":18},"in_reply_to":"533c7ded_59f8a758","updated":"2025-06-13 14:18:34.000000000","message":"Done","commit_id":"3622f2246fe4651cb8f5dc1c3981ee1be2a9d72e"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"595a2ea829c0262f791596c0f2ce5d6e029ec1e8","unresolved":true,"context_lines":[{"line_number":65,"context_line":"services with ``eventlet`` while working on to add support running services"},{"line_number":66,"context_line":"with ``threading``."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"To support both modes with the same codebase Nova started using the the"},{"line_number":69,"context_line":"`futurist`_ library. In threading mode ``futurist.ThreadPoolsExecutors`` are"},{"line_number":70,"context_line":"used to run concurrent tasks and both the ``oslo.service`` and the"},{"line_number":71,"context_line":"``oslo.messaging`` library is configured to use native threads to execute tasks"}],"source_content_type":"text/x-rst","patch_set":9,"id":"aae76eb0_3c6c28bf","line":68,"range":{"start_line":68,"start_character":68,"end_line":68,"end_character":71},"updated":"2025-06-11 10:32:29.000000000","message":"nit","commit_id":"3622f2246fe4651cb8f5dc1c3981ee1be2a9d72e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c930c2442600c90680bbfeba2050e8efb1a1501b","unresolved":false,"context_lines":[{"line_number":65,"context_line":"services with ``eventlet`` while working on to add support running services"},{"line_number":66,"context_line":"with ``threading``."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"To support both modes with the same codebase Nova started using the the"},{"line_number":69,"context_line":"`futurist`_ library. In threading mode ``futurist.ThreadPoolsExecutors`` are"},{"line_number":70,"context_line":"used to run concurrent tasks and both the ``oslo.service`` and the"},{"line_number":71,"context_line":"``oslo.messaging`` library is configured to use native threads to execute tasks"}],"source_content_type":"text/x-rst","patch_set":9,"id":"6734ac96_561446b0","line":68,"range":{"start_line":68,"start_character":68,"end_line":68,"end_character":71},"in_reply_to":"aae76eb0_3c6c28bf","updated":"2025-06-13 14:18:34.000000000","message":"Done","commit_id":"3622f2246fe4651cb8f5dc1c3981ee1be2a9d72e"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"595a2ea829c0262f791596c0f2ce5d6e029ec1e8","unresolved":true,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"To support both modes with the same codebase Nova started using the the"},{"line_number":69,"context_line":"`futurist`_ library. In threading mode ``futurist.ThreadPoolsExecutors`` are"},{"line_number":70,"context_line":"used to run concurrent tasks and both the ``oslo.service`` and the"},{"line_number":71,"context_line":"``oslo.messaging`` library is configured to use native threads to execute tasks"},{"line_number":72,"context_line":"like periodics and RPC message handlers."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":".. _futurist: https://docs.openstack.org/futurist/latest/"}],"source_content_type":"text/x-rst","patch_set":9,"id":"e44da21e_b2f096e1","line":71,"range":{"start_line":70,"start_character":29,"end_line":71,"end_character":29},"updated":"2025-06-11 10:32:29.000000000","message":"suggestion: \"and both ``oslo.service`` and ``oslo.messaging`` libraries are\"","commit_id":"3622f2246fe4651cb8f5dc1c3981ee1be2a9d72e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c930c2442600c90680bbfeba2050e8efb1a1501b","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"To support both modes with the same codebase Nova started using the the"},{"line_number":69,"context_line":"`futurist`_ library. In threading mode ``futurist.ThreadPoolsExecutors`` are"},{"line_number":70,"context_line":"used to run concurrent tasks and both the ``oslo.service`` and the"},{"line_number":71,"context_line":"``oslo.messaging`` library is configured to use native threads to execute tasks"},{"line_number":72,"context_line":"like periodics and RPC message handlers."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":".. _futurist: https://docs.openstack.org/futurist/latest/"}],"source_content_type":"text/x-rst","patch_set":9,"id":"86b91e69_08e14b25","line":71,"range":{"start_line":70,"start_character":29,"end_line":71,"end_character":29},"in_reply_to":"e44da21e_b2f096e1","updated":"2025-06-13 14:18:34.000000000","message":"Done","commit_id":"3622f2246fe4651cb8f5dc1c3981ee1be2a9d72e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4a9dac8bab14f85ce96fb579b57f282d3d262529","unresolved":false,"context_lines":[{"line_number":66,"context_line":"with ``native threading``."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"To support both modes with the same codebase Nova started using the"},{"line_number":69,"context_line":"`futurist`_ library. In native threading mode ``futurist.ThreadPoolsExecutors``"},{"line_number":70,"context_line":"are used to run concurrent tasks and both the oslo.service and the"},{"line_number":71,"context_line":"oslo.messaging libraries are configured to use native threads to execute tasks"},{"line_number":72,"context_line":"like periodics and RPC message handlers."}],"source_content_type":"text/x-rst","patch_set":20,"id":"64c04930_18f319a2","line":69,"range":{"start_line":69,"start_character":48,"end_line":69,"end_character":56},"updated":"2025-07-22 09:16:24.000000000","message":"not sure we need to say again the library name but meh.","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"80a35cb6e1075c35cdc28eb02ab118b8ffc8d3b2","unresolved":false,"context_lines":[{"line_number":66,"context_line":"with ``native threading``."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"To support both modes with the same codebase Nova started using the"},{"line_number":69,"context_line":"`futurist`_ library. In native threading mode ``futurist.ThreadPoolsExecutors``"},{"line_number":70,"context_line":"are used to run concurrent tasks and both the oslo.service and the"},{"line_number":71,"context_line":"oslo.messaging libraries are configured to use native threads to execute tasks"},{"line_number":72,"context_line":"like periodics and RPC message handlers."}],"source_content_type":"text/x-rst","patch_set":20,"id":"15567009_e4042620","line":69,"range":{"start_line":69,"start_character":48,"end_line":69,"end_character":56},"in_reply_to":"64c04930_18f319a2","updated":"2025-07-28 13:24:40.000000000","message":"femtonit, no need to respin.","commit_id":"31a12d12af4ef2365f30d7717978838d96c4bdcd"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c70eda40d4f4ec34e36587e83527be42e9433c7b","unresolved":true,"context_lines":[{"line_number":3,"context_line":""},{"line_number":4,"context_line":"Eventlet"},{"line_number":5,"context_line":"--------"},{"line_number":6,"context_line":"Before the Flamingo release all OpenStack services used *green thread* model of"},{"line_number":7,"context_line":"threading, implemented through using the Python"},{"line_number":8,"context_line":"`eventlet \u003chttp://eventlet.net/\u003e`_ and"},{"line_number":9,"context_line":"`greenlet \u003chttp://packages.python.org/greenlet/\u003e`_ libraries."}],"source_content_type":"text/x-rst","patch_set":23,"id":"df5d1113_e43ce921","line":6,"range":{"start_line":6,"start_character":51,"end_line":6,"end_character":55},"updated":"2025-07-29 15:02:20.000000000","message":"\"used the\" or \"used a\"","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"164b163508e70bde7b14aa2b726f51cd730a2b70","unresolved":false,"context_lines":[{"line_number":3,"context_line":""},{"line_number":4,"context_line":"Eventlet"},{"line_number":5,"context_line":"--------"},{"line_number":6,"context_line":"Before the Flamingo release all OpenStack services used *green thread* model of"},{"line_number":7,"context_line":"threading, implemented through using the Python"},{"line_number":8,"context_line":"`eventlet \u003chttp://eventlet.net/\u003e`_ and"},{"line_number":9,"context_line":"`greenlet \u003chttp://packages.python.org/greenlet/\u003e`_ libraries."}],"source_content_type":"text/x-rst","patch_set":23,"id":"76d7c48f_af53d115","line":6,"range":{"start_line":6,"start_character":51,"end_line":6,"end_character":55},"in_reply_to":"df5d1113_e43ce921","updated":"2025-07-30 19:28:52.000000000","message":"Done","commit_id":"e3f81f538cbf3569303bcc463f1c200cfff934f7"}]}
