)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"a185de416814a75259edaeb232bdd764b74e9dd7","unresolved":true,"context_lines":[{"line_number":9,"context_line":"Add oslo_service._multiprocessing module with get_spawn_context() and"},{"line_number":10,"context_line":"get_spawn_pool() functions to avoid fork-inherited lock deadlocks."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Includes unit tests and release notes."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I9b6050af67c47145e8d2a61c5ed77ab7124123a4"},{"line_number":15,"context_line":"Signed-off-by: Daniel Bengtsson \u003cdbengt@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9b92b3cf_c97dd05d","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":38},"updated":"2025-10-13 08:50:39.000000000","message":"I do not think we need this kind of information.","commit_id":"37fa5a3f2a36298a63d9dc4b676ccee3f238e8a2"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"3b31fdf72cc16923a98a39e8d79038476ab79692","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Add oslo_service._multiprocessing module with get_spawn_context() and"},{"line_number":10,"context_line":"get_spawn_pool() functions to avoid fork-inherited lock deadlocks."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Includes unit tests and release notes."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I9b6050af67c47145e8d2a61c5ed77ab7124123a4"},{"line_number":15,"context_line":"Signed-off-by: Daniel Bengtsson \u003cdbengt@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"0a098c92_98f1d843","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":38},"in_reply_to":"9b92b3cf_c97dd05d","updated":"2025-10-13 14:01:40.000000000","message":"Done","commit_id":"37fa5a3f2a36298a63d9dc4b676ccee3f238e8a2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"de52afa51bf5e48c74229003b7e7d46b56ddb4a1","unresolved":true,"context_lines":[{"line_number":9,"context_line":"Add oslo_service._multiprocessing module with get_spawn_context() and"},{"line_number":10,"context_line":"get_spawn_pool() functions to avoid fork-inherited lock deadlocks."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related-Bug: https://issues.redhat.com/browse/OSPRH-17937"},{"line_number":13,"context_line":"Change-Id: I9b6050af67c47145e8d2a61c5ed77ab7124123a4"},{"line_number":14,"context_line":"Signed-off-by: Daniel Bengtsson \u003cdbengt@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"a58729e0_7fbee364","line":12,"updated":"2025-10-30 14:30:44.000000000","message":"could you please point to the upstream bug instead? This is an RedHat specific bug tracker","commit_id":"4efd18fd6c7e626b923a31d91c0e25f64c86c804"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"2fbe8a13334e86e8f7d69b1a6ce6208e49bc8372","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Add oslo_service._multiprocessing module with get_spawn_context() and"},{"line_number":10,"context_line":"get_spawn_pool() functions to avoid fork-inherited lock deadlocks."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related-Bug: https://issues.redhat.com/browse/OSPRH-17937"},{"line_number":13,"context_line":"Change-Id: I9b6050af67c47145e8d2a61c5ed77ab7124123a4"},{"line_number":14,"context_line":"Signed-off-by: Daniel Bengtsson \u003cdbengt@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7823c1fc_5ea930bb","line":12,"in_reply_to":"4f5a3a17_d1e99520","updated":"2025-11-24 12:37:39.000000000","message":"Done","commit_id":"4efd18fd6c7e626b923a31d91c0e25f64c86c804"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"466e609d5f3ed6d3f855209afa78acd51f471f37","unresolved":true,"context_lines":[{"line_number":9,"context_line":"Add oslo_service._multiprocessing module with get_spawn_context() and"},{"line_number":10,"context_line":"get_spawn_pool() functions to avoid fork-inherited lock deadlocks."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related-Bug: https://issues.redhat.com/browse/OSPRH-17937"},{"line_number":13,"context_line":"Change-Id: I9b6050af67c47145e8d2a61c5ed77ab7124123a4"},{"line_number":14,"context_line":"Signed-off-by: Daniel Bengtsson \u003cdbengt@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"c7a47a2c_b6bee345","line":12,"in_reply_to":"a58729e0_7fbee364","updated":"2025-10-30 15:20:08.000000000","message":"Hi Gibi,\n\nthanks a lot for your comment!\nThe Jira ticket is public, we used it mainly to avoid duplicating work.\nI believe it can remain the main reference for now, as it’s accessible to everyone not only Red Hat employees.","commit_id":"4efd18fd6c7e626b923a31d91c0e25f64c86c804"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"9e5f23db330ea5a9344e4a9814621ad30dc6bd82","unresolved":true,"context_lines":[{"line_number":9,"context_line":"Add oslo_service._multiprocessing module with get_spawn_context() and"},{"line_number":10,"context_line":"get_spawn_pool() functions to avoid fork-inherited lock deadlocks."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related-Bug: https://issues.redhat.com/browse/OSPRH-17937"},{"line_number":13,"context_line":"Change-Id: I9b6050af67c47145e8d2a61c5ed77ab7124123a4"},{"line_number":14,"context_line":"Signed-off-by: Daniel Bengtsson \u003cdbengt@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"4f5a3a17_d1e99520","line":12,"in_reply_to":"c7a47a2c_b6bee345","updated":"2025-11-19 15:21:39.000000000","message":"Jira has no proper integration with launchpad and I strongly believe we need it reported in upstream bug tracker. Do not bring downstream thing, especially as a primary choice. It may reduce your effort but we don\u0027t know how long we can view the bug without auth, unless Red Hat publicly commit that they keep these public forever. Also it\u0027s quite problematic for users that some bugs can\u0027t be found directly in upstream bug tracker and they need to dig into Red Hat\u0027s own thing to find some problems about OpenStack.","commit_id":"4efd18fd6c7e626b923a31d91c0e25f64c86c804"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"de887fd57b2d888a15c576128fde7dbcc445984f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"9daf69d5_dcd9f6a7","updated":"2025-10-11 10:54:15.000000000","message":"recheck","commit_id":"941e429c3e86018f84a50b5ba04c389488d6ce67"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"a185de416814a75259edaeb232bdd764b74e9dd7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"6f94b910_daea7aa9","updated":"2025-10-13 08:50:39.000000000","message":"Hey Daniel, thank you for this patch. See my inline comments. Maybe you could also put a not about the related bug recently reported by cinder.","commit_id":"37fa5a3f2a36298a63d9dc4b676ccee3f238e8a2"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"49053717f0873939db0fa1665be46364efb665dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"e9ddeb59_83de21fd","updated":"2025-11-06 09:21:28.000000000","message":"In regard of the children patch, I think one architectural element is missing here:\n\n```\nfrom multiprocessing import set_start_method\nset_start_method(\"spawn\")\n```\n\nYou only defined way to get spawn context, but there is no way to define the start_method.\n\nI don\u0027t know what is your plan, but I think your patch is semantically correct in the way that we need a way to retrieve context, but I think it is architecturally incorrect because, AFAIKS, there is no way to set one.\n\nThoughts?","commit_id":"4efd18fd6c7e626b923a31d91c0e25f64c86c804"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"cc8b73e44de1ad65ea30c71096e5ff23971c026b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"2c1ace38_c387ebbc","updated":"2025-11-03 15:26:59.000000000","message":"LGTM","commit_id":"4efd18fd6c7e626b923a31d91c0e25f64c86c804"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"62ada00af395c1c10141ebcd7167fcad1fbf07be","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"5512c824_eae1e153","in_reply_to":"281b0352_bcbf04f5","updated":"2025-11-12 12:59:09.000000000","message":"Thanks for the clarification. So, I think we need some extra comments or documentation here to explain that, because, at first glance, it is not obvious, at least for me.\n\nIMO this can be added to the docstring of the code added by this patch, hence, the docs will reflect that point.","commit_id":"4efd18fd6c7e626b923a31d91c0e25f64c86c804"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"d68ffee203cf5b7ae8017c3579101753d3e5a46a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"281b0352_bcbf04f5","in_reply_to":"b31bba0c_f63baaf7","updated":"2025-11-07 13:22:00.000000000","message":"Yes, exactly as mentioned in the Python documentation,\nmultiprocessing.get_context(\u0027spawn\u0027) returns a local context configured with the spawn start method.\nThis behavior is intentional here: we avoid calling set_start_method(\u0027spawn\u0027) globally, since it can only be done once per interpreter and could interfere with other multiprocessing users (like cotyledon or eventlet).\nSo the current design uses an isolated context instead of changing the global start method.","commit_id":"4efd18fd6c7e626b923a31d91c0e25f64c86c804"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"9c8c86cdbef116e324a5beaae5f0c50c5279e5a2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b31bba0c_f63baaf7","in_reply_to":"e9ddeb59_83de21fd","updated":"2025-11-06 09:28:52.000000000","message":"The python doc is not clear [1] (at least for me), if I correctly understand the stdlib doc, passing a method to `get_context` will implicitly initialize the context with the method to use. If this is true, then your patch is correct, but I personnaly need double checks to ensure that you all understand the same thing than me.\n\n[1] https://docs.python.org/3/library/multiprocessing.html#multiprocessing.get_context","commit_id":"4efd18fd6c7e626b923a31d91c0e25f64c86c804"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"ced3afd71bd333ddaa5d10090108216987a9ca4d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"bfe9a47d_4a04e539","updated":"2025-11-18 14:03:24.000000000","message":"LGTM","commit_id":"880b38ca182726aa919da4fd213fe056b3f151a9"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"2f29fb802cdc3f0abb47f32597bf94d596dc5a72","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"c68e1afd_096af8f6","updated":"2025-11-14 10:04:27.000000000","message":"Thank you for the doc update. Please can you answer my question on your follow up patch about cotyledon?","commit_id":"880b38ca182726aa919da4fd213fe056b3f151a9"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"ced3afd71bd333ddaa5d10090108216987a9ca4d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"8a889d4c_5b1b9c3c","in_reply_to":"c68e1afd_096af8f6","updated":"2025-11-18 14:03:24.000000000","message":"Done","commit_id":"880b38ca182726aa919da4fd213fe056b3f151a9"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"2cd29baddbe4318db078d3859101d039e745e36e","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":12,"id":"d44d4cb1_6cf64104","updated":"2025-11-24 07:35:33.000000000","message":"If you still prefer using your dowstream tracker then it\u0027s ok. But I\u0027ll never review it because I don\u0027t want to waste my time for your downstream-centric work. Ask someone from Red Hat to review it then.","commit_id":"5e3fa61ab3b54c2886ec604afd2c52ddf18bdc0e"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"cbf644cef9e5e85db0293938e975193f39f2f33d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":12,"id":"5a0ad043_b4054121","in_reply_to":"4aa2481c_dc565738","updated":"2025-11-24 15:04:21.000000000","message":"I\u0027m unsure if you really understand my main concern.\n\nI don\u0027t have any concern about the code change itself.\n\nMy main concern is about adding the link to your downstream tracker for the convenience in the donwstream workflow and your saying you won\u0027t create a launchpad to \"avoid duplicating work\".\n\nJira has never been an official tracker. If we accept adding the link to any domwstream task/bug tracker,, I can easily imagine that other vendors may do the same. This causes fragmentation of the backgroud context and just leaves garbage in the commit log. That\u0027s what we should really avoid.","commit_id":"5e3fa61ab3b54c2886ec604afd2c52ddf18bdc0e"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"38903acb60b0e25ce252f3c50bef2c49f9cd8301","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":12,"id":"228bfbc1_a41c8569","in_reply_to":"5a0ad043_b4054121","updated":"2025-11-26 14:31:53.000000000","message":"Understood, thanks a lot for the explanation.\nI’ll avoid adding downstream tracker links in future commits.","commit_id":"5e3fa61ab3b54c2886ec604afd2c52ddf18bdc0e"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"bdbe648cde3090d3c2a2ce560c319a9d8e62fd65","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"4aa2481c_dc565738","in_reply_to":"722a1601_6200cd20","updated":"2025-11-24 14:46:37.000000000","message":"Thanks a lot for the clarification.\n\nJust to confirm, this patch does not change any upstream workflow.\nThe intention was only to fix technical issues related to multiprocessing.\n\nIf there are any specific workflow concerns I should address, please let me know.","commit_id":"5e3fa61ab3b54c2886ec604afd2c52ddf18bdc0e"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"5c7538595423055b5e046592e8a8acf3267df00d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":12,"id":"e39d5735_c27b7cb9","in_reply_to":"d44d4cb1_6cf64104","updated":"2025-11-24 10:27:27.000000000","message":"Hi,\n\nI have removed the Jira link it was simply an oversight.  \nI’d prefer to keep the discussion focused on the technical aspects of the patch.\n\nThis change was proposed in good faith to improve oslo.service and address issues related to fork and threading compatibility.\nIf you have specific technical concerns or suggestions, I’m happy to address them.","commit_id":"5e3fa61ab3b54c2886ec604afd2c52ddf18bdc0e"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"2fbe8a13334e86e8f7d69b1a6ce6208e49bc8372","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"722a1601_6200cd20","in_reply_to":"e39d5735_c27b7cb9","updated":"2025-11-24 12:37:39.000000000","message":"OK. Please note that the technical aspect is as import as workflow aspect. IMHO as an open community we should avoid bringing replace the existing workflow for downstream-specific convenience.","commit_id":"5e3fa61ab3b54c2886ec604afd2c52ddf18bdc0e"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"eddfb2d590aa6f4bfa1580611b0a9f75c6dae38b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"d4c0ad6e_00d68a9f","updated":"2025-11-24 15:42:11.000000000","message":"I\u0027ll uprade my vote once zuul posts CI results.","commit_id":"419dcc72ae03a8c1f8b8ad9807f87a4b0357428f"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"99ec30aebddfcd72d32c30b6e4511f5766e062fe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"773d9339_a1c04f23","updated":"2025-11-26 14:36:34.000000000","message":"LGTM, thanks","commit_id":"419dcc72ae03a8c1f8b8ad9807f87a4b0357428f"}],"oslo_service/_multiprocessing.py":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"a185de416814a75259edaeb232bdd764b74e9dd7","unresolved":true,"context_lines":[{"line_number":55,"context_line":"    processes: int | None \u003d None,"},{"line_number":56,"context_line":"    initializer: Callable | None \u003d None,"},{"line_number":57,"context_line":"    initargs: tuple \u003d (),"},{"line_number":58,"context_line":"    maxtasksperchild: int | None \u003d None,"},{"line_number":59,"context_line":") -\u003e Pool:"},{"line_number":60,"context_line":"    \"\"\"Get a multiprocessing pool created with the \u0027spawn\u0027 start method."},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"818372a8_a76ee5a6","line":58,"range":{"start_line":58,"start_character":4,"end_line":58,"end_character":20},"updated":"2025-10-13 08:50:39.000000000","message":"for the sake of readness, I\u0027d suggest to rename it `max_tasks_per_child`. Maybe we should do the same for `init_args`.\nAnd same thing for all the occurences below.","commit_id":"37fa5a3f2a36298a63d9dc4b676ccee3f238e8a2"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"3b31fdf72cc16923a98a39e8d79038476ab79692","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    processes: int | None \u003d None,"},{"line_number":56,"context_line":"    initializer: Callable | None \u003d None,"},{"line_number":57,"context_line":"    initargs: tuple \u003d (),"},{"line_number":58,"context_line":"    maxtasksperchild: int | None \u003d None,"},{"line_number":59,"context_line":") -\u003e Pool:"},{"line_number":60,"context_line":"    \"\"\"Get a multiprocessing pool created with the \u0027spawn\u0027 start method."},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5d80a3e8_f8bbdf7f","line":58,"range":{"start_line":58,"start_character":4,"end_line":58,"end_character":20},"in_reply_to":"818372a8_a76ee5a6","updated":"2025-10-13 14:01:40.000000000","message":"Done","commit_id":"37fa5a3f2a36298a63d9dc4b676ccee3f238e8a2"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"9e5f23db330ea5a9344e4a9814621ad30dc6bd82","unresolved":true,"context_lines":[{"line_number":105,"context_line":"    passed through to the underlying Pool constructor."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    :param processes: The number of worker processes to use. If None, the"},{"line_number":108,"context_line":"                      number returned by os.cpu_count() is used."},{"line_number":109,"context_line":"    :type processes: int, optional"},{"line_number":110,"context_line":"    :param initializer: If not None, each worker process will call"},{"line_number":111,"context_line":"                       initializer(*init_args) when it starts."}],"source_content_type":"text/x-python","patch_set":8,"id":"2f3d5cc0_d11ff11f","line":108,"range":{"start_line":108,"start_character":44,"end_line":108,"end_character":53},"updated":"2025-11-19 15:21:39.000000000","message":"process_cpu_count","commit_id":"880b38ca182726aa919da4fd213fe056b3f151a9"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"411bb5f9d6938ad49a6b61e126a37fd1c98c17f9","unresolved":false,"context_lines":[{"line_number":105,"context_line":"    passed through to the underlying Pool constructor."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    :param processes: The number of worker processes to use. If None, the"},{"line_number":108,"context_line":"                      number returned by os.cpu_count() is used."},{"line_number":109,"context_line":"    :type processes: int, optional"},{"line_number":110,"context_line":"    :param initializer: If not None, each worker process will call"},{"line_number":111,"context_line":"                       initializer(*init_args) when it starts."}],"source_content_type":"text/x-python","patch_set":8,"id":"18f688b9_ebe3059e","line":108,"range":{"start_line":108,"start_character":44,"end_line":108,"end_character":53},"in_reply_to":"2f3d5cc0_d11ff11f","updated":"2025-11-20 12:10:40.000000000","message":"Done","commit_id":"880b38ca182726aa919da4fd213fe056b3f151a9"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"9e5f23db330ea5a9344e4a9814621ad30dc6bd82","unresolved":true,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    :param processes: The number of worker processes to use. If None, the"},{"line_number":108,"context_line":"                      number returned by os.cpu_count() is used."},{"line_number":109,"context_line":"    :type processes: int, optional"},{"line_number":110,"context_line":"    :param initializer: If not None, each worker process will call"},{"line_number":111,"context_line":"                       initializer(*init_args) when it starts."},{"line_number":112,"context_line":"    :type initializer: callable, optional"}],"source_content_type":"text/x-python","patch_set":8,"id":"2487dfa3_5483c3a2","line":109,"range":{"start_line":109,"start_character":4,"end_line":109,"end_character":34},"updated":"2025-11-19 15:21:39.000000000","message":"We can drop these type/rtype fields because these are now defined in arguments directly.","commit_id":"880b38ca182726aa919da4fd213fe056b3f151a9"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"7ca76bfc64f8f79e0a0290f7d35a2f0b9659bd29","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    :param processes: The number of worker processes to use. If None, the"},{"line_number":108,"context_line":"                      number returned by os.cpu_count() is used."},{"line_number":109,"context_line":"    :type processes: int, optional"},{"line_number":110,"context_line":"    :param initializer: If not None, each worker process will call"},{"line_number":111,"context_line":"                       initializer(*init_args) when it starts."},{"line_number":112,"context_line":"    :type initializer: callable, optional"}],"source_content_type":"text/x-python","patch_set":8,"id":"7ce84068_0bad07d5","line":109,"range":{"start_line":109,"start_character":4,"end_line":109,"end_character":34},"in_reply_to":"2487dfa3_5483c3a2","updated":"2025-11-20 11:33:43.000000000","message":"Done","commit_id":"880b38ca182726aa919da4fd213fe056b3f151a9"}],"oslo_service/systemd.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"2fbe8a13334e86e8f7d69b1a6ce6208e49bc8372","unresolved":true,"context_lines":[{"line_number":71,"context_line":"    \"\"\"Wait for systemd style notification on the socket."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    :param notify_socket: local socket address"},{"line_number":74,"context_line":"    :type notify_socket:  string"},{"line_number":75,"context_line":"    :param timeout:       socket timeout"},{"line_number":76,"context_line":"    :type timeout:        float"},{"line_number":77,"context_line":"    :returns:             0 service ready"}],"source_content_type":"text/x-python","patch_set":13,"id":"f7c84297_35efa9d7","side":"PARENT","line":74,"range":{"start_line":74,"start_character":5,"end_line":74,"end_character":32},"updated":"2025-11-24 12:37:39.000000000","message":"Revert these now, because the method doesn\u0027t have type hints yet.","commit_id":"37b90521ea01baa0c8e6412453c42972a28e3b12"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"38b4a74a1f089308624edee162be4dad05f79c7e","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    \"\"\"Wait for systemd style notification on the socket."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    :param notify_socket: local socket address"},{"line_number":74,"context_line":"    :type notify_socket:  string"},{"line_number":75,"context_line":"    :param timeout:       socket timeout"},{"line_number":76,"context_line":"    :type timeout:        float"},{"line_number":77,"context_line":"    :returns:             0 service ready"}],"source_content_type":"text/x-python","patch_set":13,"id":"5225391b_f4dabe7b","side":"PARENT","line":74,"range":{"start_line":74,"start_character":5,"end_line":74,"end_character":32},"in_reply_to":"3ac32465_81056886","updated":"2025-11-24 14:41:32.000000000","message":"Done","commit_id":"37b90521ea01baa0c8e6412453c42972a28e3b12"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"18b40fc85fa18eba5db0a45331caaaba25e75eee","unresolved":true,"context_lines":[{"line_number":71,"context_line":"    \"\"\"Wait for systemd style notification on the socket."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    :param notify_socket: local socket address"},{"line_number":74,"context_line":"    :type notify_socket:  string"},{"line_number":75,"context_line":"    :param timeout:       socket timeout"},{"line_number":76,"context_line":"    :type timeout:        float"},{"line_number":77,"context_line":"    :returns:             0 service ready"}],"source_content_type":"text/x-python","patch_set":13,"id":"3ac32465_81056886","side":"PARENT","line":74,"range":{"start_line":74,"start_character":5,"end_line":74,"end_character":32},"in_reply_to":"f7c84297_35efa9d7","updated":"2025-11-24 14:25:09.000000000","message":"Yes right.","commit_id":"37b90521ea01baa0c8e6412453c42972a28e3b12"}],"oslo_service/tests/base.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"2fbe8a13334e86e8f7d69b1a6ce6208e49bc8372","unresolved":true,"context_lines":[{"line_number":64,"context_line":"        root\u003d argument."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        :param filename: filename"},{"line_number":67,"context_line":"        :type filename: string"},{"line_number":68,"context_line":"        :param root: temporary directory to create a new file in"},{"line_number":69,"context_line":"        :type root: fixtures.TempDir"},{"line_number":70,"context_line":"        :returns: absolute file path string"}],"source_content_type":"text/x-python","patch_set":13,"id":"ab358900_b8278172","side":"PARENT","line":67,"range":{"start_line":67,"start_character":8,"end_line":67,"end_character":30},"updated":"2025-11-24 12:37:39.000000000","message":"Revert these now, because the method doesn\u0027t have type hints yet.","commit_id":"37b90521ea01baa0c8e6412453c42972a28e3b12"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"38b4a74a1f089308624edee162be4dad05f79c7e","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        root\u003d argument."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        :param filename: filename"},{"line_number":67,"context_line":"        :type filename: string"},{"line_number":68,"context_line":"        :param root: temporary directory to create a new file in"},{"line_number":69,"context_line":"        :type root: fixtures.TempDir"},{"line_number":70,"context_line":"        :returns: absolute file path string"}],"source_content_type":"text/x-python","patch_set":13,"id":"4a87fdc1_e9d2cc8a","side":"PARENT","line":67,"range":{"start_line":67,"start_character":8,"end_line":67,"end_character":30},"in_reply_to":"ab358900_b8278172","updated":"2025-11-24 14:41:32.000000000","message":"Done","commit_id":"37b90521ea01baa0c8e6412453c42972a28e3b12"}],"oslo_service/tests/test_multiprocessing.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"9e5f23db330ea5a9344e4a9814621ad30dc6bd82","unresolved":true,"context_lines":[{"line_number":20,"context_line":"from oslo_service.tests import base"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def _square_func(x):"},{"line_number":24,"context_line":"    \"\"\"Helper function for testing multiprocessing.\"\"\""},{"line_number":25,"context_line":"    return x * x"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"b1c46b9b_abda3f00","line":23,"range":{"start_line":23,"start_character":4,"end_line":23,"end_character":16},"updated":"2025-11-19 15:21:39.000000000","message":"It seems this is not used ?","commit_id":"880b38ca182726aa919da4fd213fe056b3f151a9"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"7ca76bfc64f8f79e0a0290f7d35a2f0b9659bd29","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from oslo_service.tests import base"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def _square_func(x):"},{"line_number":24,"context_line":"    \"\"\"Helper function for testing multiprocessing.\"\"\""},{"line_number":25,"context_line":"    return x * x"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"6f386a4b_8ca9b84a","line":23,"range":{"start_line":23,"start_character":4,"end_line":23,"end_character":16},"in_reply_to":"b1c46b9b_abda3f00","updated":"2025-11-20 11:33:43.000000000","message":"Done","commit_id":"880b38ca182726aa919da4fd213fe056b3f151a9"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"9e5f23db330ea5a9344e4a9814621ad30dc6bd82","unresolved":true,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        # Test that we can create a pool (but don\u0027t use it to avoid hanging)"},{"line_number":76,"context_line":"        pool \u003d _multiprocessing.get_spawn_pool(processes\u003d1)"},{"line_number":77,"context_line":"        self.assertIsInstance(pool, multiprocessing.pool.Pool)"},{"line_number":78,"context_line":"        pool.close()"},{"line_number":79,"context_line":"        pool.join()"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"6308a5f4_145cc22e","line":77,"range":{"start_line":77,"start_character":8,"end_line":77,"end_character":62},"updated":"2025-11-19 15:21:39.000000000","message":"We may need try-finally here. Alternatively you can migrate these to setUp/tearDown.\n\n```\ndef setUp(self):\n    super().setUp()\n    self.pool \u003d None\n\ndef tearDown(self):\n    if self.pool:\n        pool.close()\n        pool.join()\n    super().tearDown()\n```","commit_id":"880b38ca182726aa919da4fd213fe056b3f151a9"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"7ca76bfc64f8f79e0a0290f7d35a2f0b9659bd29","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        # Test that we can create a pool (but don\u0027t use it to avoid hanging)"},{"line_number":76,"context_line":"        pool \u003d _multiprocessing.get_spawn_pool(processes\u003d1)"},{"line_number":77,"context_line":"        self.assertIsInstance(pool, multiprocessing.pool.Pool)"},{"line_number":78,"context_line":"        pool.close()"},{"line_number":79,"context_line":"        pool.join()"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"09160b33_2b23fdf5","line":77,"range":{"start_line":77,"start_character":8,"end_line":77,"end_character":62},"in_reply_to":"6308a5f4_145cc22e","updated":"2025-11-20 11:33:43.000000000","message":"Done","commit_id":"880b38ca182726aa919da4fd213fe056b3f151a9"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"9e5f23db330ea5a9344e4a9814621ad30dc6bd82","unresolved":true,"context_lines":[{"line_number":88,"context_line":"        code \u003d (\"import oslo_service, sys; \""},{"line_number":89,"context_line":"                \"print(\u0027_multiprocessing\u0027 in sys.modules)\")"},{"line_number":90,"context_line":"        out \u003d subprocess.check_output([sys.executable, \"-c\", code], text\u003dTrue)"},{"line_number":91,"context_line":"        assert \"False\" in out, f\"Unexpected import side effect: {out}\""}],"source_content_type":"text/x-python","patch_set":8,"id":"9c2e2add_c841e184","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":14},"updated":"2025-11-19 15:21:39.000000000","message":"Can\u0027t we use self.assertIn ?","commit_id":"880b38ca182726aa919da4fd213fe056b3f151a9"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"7ca76bfc64f8f79e0a0290f7d35a2f0b9659bd29","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        code \u003d (\"import oslo_service, sys; \""},{"line_number":89,"context_line":"                \"print(\u0027_multiprocessing\u0027 in sys.modules)\")"},{"line_number":90,"context_line":"        out \u003d subprocess.check_output([sys.executable, \"-c\", code], text\u003dTrue)"},{"line_number":91,"context_line":"        assert \"False\" in out, f\"Unexpected import side effect: {out}\""}],"source_content_type":"text/x-python","patch_set":8,"id":"b15ba747_7101c26f","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":14},"in_reply_to":"9c2e2add_c841e184","updated":"2025-11-20 11:33:43.000000000","message":"Done","commit_id":"880b38ca182726aa919da4fd213fe056b3f151a9"}],"oslo_service/tests/test_no_import_side_effects.py":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"a185de416814a75259edaeb232bdd764b74e9dd7","unresolved":true,"context_lines":[{"line_number":18,"context_line":"from oslo_service.tests import base"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class TestNoImportSideEffects(base.ServiceBaseTestCase):"},{"line_number":22,"context_line":"    \"\"\"Test that importing oslo_service doesn\u0027t have unwanted side effects.\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def test_no_import_of_multiprocessing_module(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3590a87b_70afd204","line":21,"range":{"start_line":21,"start_character":6,"end_line":21,"end_character":29},"updated":"2025-10-13 08:50:39.000000000","message":"Just to be sure that I understand the point of that test, please confirm that the goal of this test is to ensure that importing oslo.service do not put side effects over the `multiprocessing` module of the stdlib, right?\n\nIf yes, the test file and test class should be renamed, or even merged into the `test_multiprocessing` module, because their goal is not obvious at first glance.","commit_id":"37fa5a3f2a36298a63d9dc4b676ccee3f238e8a2"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"dc3a69703b5b614312bfeadc72038f4281f4a0fe","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from oslo_service.tests import base"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class TestNoImportSideEffects(base.ServiceBaseTestCase):"},{"line_number":22,"context_line":"    \"\"\"Test that importing oslo_service doesn\u0027t have unwanted side effects.\"\"\""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def test_no_import_of_multiprocessing_module(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"08786e6a_a8275aa5","line":21,"range":{"start_line":21,"start_character":6,"end_line":21,"end_character":29},"in_reply_to":"3590a87b_70afd204","updated":"2025-10-13 14:01:51.000000000","message":"Done","commit_id":"37fa5a3f2a36298a63d9dc4b676ccee3f238e8a2"}]}
