)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"1f69baaea8a1fa0be6c1fa68f91c76c68c60a7b2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"877d6c4f_a2c54c21","updated":"2025-02-05 09:22:21.000000000","message":"recheck","commit_id":"ef770d8987de35246155979e308b8608b37168d9"}],"neutron_vpnaas/services/vpn/common/netns_wrapper.py":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"9040457c19fb67000df09c56937dc7c007618f92","unresolved":true,"context_lines":[{"line_number":60,"context_line":"                          stdin\u003dsubprocess.PIPE,"},{"line_number":61,"context_line":"                          stdout\u003dsubprocess.PIPE,"},{"line_number":62,"context_line":"                          stderr\u003dsubprocess.PIPE,"},{"line_number":63,"context_line":"                          preexec_fn\u003dutils._subprocess_setup,"},{"line_number":64,"context_line":"                          close_fds\u003dTrue, env\u003denv) as obj:"},{"line_number":65,"context_line":"        _stdout, _stderr \u003d obj.communicate()"},{"line_number":66,"context_line":"        _stdout \u003d helpers.safe_decode_utf8(_stdout)"}],"source_content_type":"text/x-python","patch_set":2,"id":"d5def256_6aa0760c","line":63,"range":{"start_line":63,"start_character":26,"end_line":63,"end_character":60},"updated":"2025-01-28 09:52:03.000000000","message":"this perhaps not works with threads (see: https://docs.python.org/3/library/signal.html#signal.signal) as we set SIG_DFL to be used for SIgPIPE (see: https://opendev.org/openstack/neutron/src/commit/c05984398aa35116fd82704bdbce7ba4a2400d8d/neutron/common/utils.py#L123-L126 )","commit_id":"8cd6379e18fc58863a788f93a9f9ab4f48ff4698"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"af39c0ad474cdddbe40fc1e66957f84dc86c208c","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                          stdin\u003dsubprocess.PIPE,"},{"line_number":61,"context_line":"                          stdout\u003dsubprocess.PIPE,"},{"line_number":62,"context_line":"                          stderr\u003dsubprocess.PIPE,"},{"line_number":63,"context_line":"                          preexec_fn\u003dutils._subprocess_setup,"},{"line_number":64,"context_line":"                          close_fds\u003dTrue, env\u003denv) as obj:"},{"line_number":65,"context_line":"        _stdout, _stderr \u003d obj.communicate()"},{"line_number":66,"context_line":"        _stdout \u003d helpers.safe_decode_utf8(_stdout)"}],"source_content_type":"text/x-python","patch_set":2,"id":"b5d7b069_bea9c952","line":63,"range":{"start_line":63,"start_character":26,"end_line":63,"end_character":60},"in_reply_to":"3e2a8941_f40c316a","updated":"2025-01-30 09:31:05.000000000","message":"you are right the popen covers the case of this preexec","commit_id":"8cd6379e18fc58863a788f93a9f9ab4f48ff4698"},{"author":{"_account_id":31976,"name":"Bodo Petermann","email":"b.petermann@syseleven.de","username":"bpetermann"},"change_message_id":"65a4dfaea05c5bf2a02e5c574655d1d59607f989","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                          stdin\u003dsubprocess.PIPE,"},{"line_number":61,"context_line":"                          stdout\u003dsubprocess.PIPE,"},{"line_number":62,"context_line":"                          stderr\u003dsubprocess.PIPE,"},{"line_number":63,"context_line":"                          preexec_fn\u003dutils._subprocess_setup,"},{"line_number":64,"context_line":"                          close_fds\u003dTrue, env\u003denv) as obj:"},{"line_number":65,"context_line":"        _stdout, _stderr \u003d obj.communicate()"},{"line_number":66,"context_line":"        _stdout \u003d helpers.safe_decode_utf8(_stdout)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3e2a8941_f40c316a","line":63,"range":{"start_line":63,"start_character":26,"end_line":63,"end_character":60},"in_reply_to":"c2c996a8_f84cdaf0","updated":"2025-01-29 14:37:24.000000000","message":"I think nowadays we don\u0027t need that pre-exec anymore, as that\u0027s covered by Popen\u0027s `restore_signals\u003dTrue`","commit_id":"8cd6379e18fc58863a788f93a9f9ab4f48ff4698"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c532129cf098dfa0172e5ff973a591520522db6c","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                          stdin\u003dsubprocess.PIPE,"},{"line_number":61,"context_line":"                          stdout\u003dsubprocess.PIPE,"},{"line_number":62,"context_line":"                          stderr\u003dsubprocess.PIPE,"},{"line_number":63,"context_line":"                          preexec_fn\u003dutils._subprocess_setup,"},{"line_number":64,"context_line":"                          close_fds\u003dTrue, env\u003denv) as obj:"},{"line_number":65,"context_line":"        _stdout, _stderr \u003d obj.communicate()"},{"line_number":66,"context_line":"        _stdout \u003d helpers.safe_decode_utf8(_stdout)"}],"source_content_type":"text/x-python","patch_set":2,"id":"c2c996a8_f84cdaf0","line":63,"range":{"start_line":63,"start_character":26,"end_line":63,"end_character":60},"in_reply_to":"d5def256_6aa0760c","updated":"2025-01-28 14:22:41.000000000","message":"Where are we calling this method? Isn\u0027t it called from the main thread?","commit_id":"8cd6379e18fc58863a788f93a9f9ab4f48ff4698"}]}
