)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7daddf05def9c950bc31d4b97048454ad7a0affe","unresolved":true,"context_lines":[{"line_number":18,"context_line":"when run under mod_wsgi uncaught exception do not terminate"},{"line_number":19,"context_line":"the python interpreter so we explictly call sys.exit to force"},{"line_number":20,"context_line":"that. Under eventlet uncaught excptions terminate as expected."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: I130913e5f86f43de940001808cf2a38662cb1088"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"85232eb1_35499807","line":21,"updated":"2025-03-19 01:09:21.000000000","message":"i should proably add\nRelated-Bug: 1882094","commit_id":"bf5931a5afa30c703aa076c51574150be817a208"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"65911035fc65f65f095ccb7514f96d34521c5521","unresolved":true,"context_lines":[{"line_number":10,"context_line":"by default a decorated function will call sys.exit if it"},{"line_number":11,"context_line":"raises an exception."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This is used to force the api entryporits to raise"},{"line_number":14,"context_line":"if they ever leak an uncaught excpetion like a config error"},{"line_number":15,"context_line":"from init_application. Note we only annotate the wsgi"},{"line_number":16,"context_line":"entrypoints rather then main functions in the command modules."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"ffad569a_509482e7","line":13,"range":{"start_line":13,"start_character":30,"end_line":13,"end_character":41},"updated":"2025-03-20 01:09:53.000000000","message":"entrypoints","commit_id":"c9a43c11f2ca069720d49e7a193e9f00ffee4527"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cf2032e9065d614cf014686aef1a3d7111c1ce79","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ecaaa240_b07dea3c","updated":"2025-03-19 08:38:08.000000000","message":"Unfortunately it does not seems to be effective solving the issue https://github.com/openstack-k8s-operators/nova-operator/pull/939#issuecomment-2735738975","commit_id":"bf5931a5afa30c703aa076c51574150be817a208"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0e096dc7160e76c496b736926b1ce69b1d0a64e1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e48ab3cc_a0a08c79","updated":"2025-03-19 00:28:09.000000000","message":"im testing this with apache here https://github.com/openstack-k8s-operators/nova-operator/pull/939","commit_id":"bf5931a5afa30c703aa076c51574150be817a208"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"eb273c8a8ca85597ba6d55b7f404d82ac5b787e0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e7ba079f_871dd631","updated":"2025-03-19 14:06:20.000000000","message":"testing shows WSGI app was kept running\n\nmod_wsgi (pid\u003d15): SystemExit exception raised by WSGI script \u0027/usr/bin/nova-api-wsgi\u0027 ignored.","commit_id":"bf5931a5afa30c703aa076c51574150be817a208"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fd2ffaffc0deffb2a229f4236b7f8bbe4033dbd6","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"77296d23_ccf23e7e","in_reply_to":"e7ba079f_871dd631","updated":"2025-03-19 14:31:42.000000000","message":"yes i know as dicussed on slack i was working on a new verion to use os.kill\n\ni have retriggered that testing now with this latest verion","commit_id":"bf5931a5afa30c703aa076c51574150be817a208"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3afdb54145cdee37d71a84eed9c42c8451520b66","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ec717092_36700f4c","in_reply_to":"ecaaa240_b07dea3c","updated":"2025-03-19 14:30:57.000000000","message":"ya i checked the mod_wsgi source and they have special handeling ot ignore SystemExit\n\nwhile i was there i started looking at the reload docs and i found this\n\nhttps://modwsgi.readthedocs.io/en/latest/user-guides/reloading-source-code.html#restarting-daemon-processes\n\nthere is a documented way for wsgi applciation to reload themselves using os.kill\nbased on an envionment vairble that is set when running under mod_wsgi\n\nso i will use that to kill the python process instead of sys.exit() when running under apache","commit_id":"bf5931a5afa30c703aa076c51574150be817a208"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"65911035fc65f65f095ccb7514f96d34521c5521","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"22612d6d_3a7961ae","updated":"2025-03-20 01:09:53.000000000","message":"This looks nice to me, assuming testing of this version worked for both mod_wsgi and non. Main issue is the docstring I think.","commit_id":"c9a43c11f2ca069720d49e7a193e9f00ffee4527"}],"nova/api/metadata/wsgi.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0226e2563cd9a0af9c30b57cb5d7a4026623bcdb","unresolved":true,"context_lines":[{"line_number":17,"context_line":"NAME \u003d \"metadata\""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"@utils.exit_on_error"},{"line_number":21,"context_line":"def init_application():"},{"line_number":22,"context_line":"    return wsgi_app.init_application(NAME)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3c7f16ae_97bf3e49","line":20,"updated":"2025-03-18 23:21:18.000000000","message":"... so mod_wsgi si not happy wiht this\n\nmod_wsgi (pid\u003d15): Failed to exec Python script file \u0027/usr/bin/nova-api-wsgi\u0027.\nmod_wsgi (pid\u003d15): Exception occurred processing WSGI script \u0027/usr/bin/nova-api-wsgi\u0027.\nTraceback (most recent call last):\n  File \"/usr/bin/nova-api-wsgi\", line 52, in \u003cmodule\u003e\n    application \u003d init_application()\nTypeError: outer_wrapper() missing 1 required positional argument: \u0027func\u0027\n10.217.0.2 - - [18/Mar/2025:20:26:10 +0000] \"GET / HTTP/1.1\" 500 531 \"-\" \"kube-probe/1.29\"\n\ni might need to move this one level down?\n\nthat or my decorator is not quite right","commit_id":"616944b57d09c53fb49523e882c4aae64efc48cf"}],"nova/api/openstack/wsgi_app.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"715b0a399b817bb7201e90e7848f857f6b33b1b1","unresolved":true,"context_lines":[{"line_number":125,"context_line":"    # during it (example: DBConnectionError while setting up the service) and"},{"line_number":126,"context_line":"    # apache/mod_wsgi reloads the init_application script. So, we initialize"},{"line_number":127,"context_line":"    # global data separately and decorate the method to run only once in a"},{"line_number":128,"context_line":"    # python interpreter instance."},{"line_number":129,"context_line":"    init_global_data(conf_files, name)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"2e55b98d_f0454a18","line":128,"updated":"2025-03-19 01:03:28.000000000","message":"by the way this is the same reaons we are not exiting form mod_wsgi when we get the config error.\n\nadding @utils.exit_on_error will cause use to unwind the stack and then exit the intepreter\n\nif mod_wsgi is catching SystemExit explictly we could be even more agrresive and call os._exit() ot exit the intepreter without calling any excption handeling code\nbut im hoping that wont be nessisarly and sys.exit() will be enough to convert the expction into exiting the interperter properly.","commit_id":"bf5931a5afa30c703aa076c51574150be817a208"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7daddf05def9c950bc31d4b97048454ad7a0affe","unresolved":true,"context_lines":[{"line_number":125,"context_line":"    # during it (example: DBConnectionError while setting up the service) and"},{"line_number":126,"context_line":"    # apache/mod_wsgi reloads the init_application script. So, we initialize"},{"line_number":127,"context_line":"    # global data separately and decorate the method to run only once in a"},{"line_number":128,"context_line":"    # python interpreter instance."},{"line_number":129,"context_line":"    init_global_data(conf_files, name)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"00f7ba4f_953e9dbc","line":128,"in_reply_to":"2e55b98d_f0454a18","updated":"2025-03-19 01:09:21.000000000","message":"we actully dicussed calling sys.exit in that bug orginally \nhttps://bugs.launchpad.net/nova/+bug/1882094/comments/2","commit_id":"bf5931a5afa30c703aa076c51574150be817a208"}],"nova/tests/unit/test_utils.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"65911035fc65f65f095ccb7514f96d34521c5521","unresolved":true,"context_lines":[{"line_number":1408,"context_line":"    @utils.exit_on_error"},{"line_number":1409,"context_line":"    def dummy_test_func(self, fail\u003dFalse):"},{"line_number":1410,"context_line":"        if fail:"},{"line_number":1411,"context_line":"            raise ExitOnErrorTests.error"},{"line_number":1412,"context_line":"        return True"},{"line_number":1413,"context_line":""},{"line_number":1414,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7485dec2_e0f801be","line":1411,"range":{"start_line":1411,"start_character":18,"end_line":1411,"end_character":40},"updated":"2025-03-20 01:09:53.000000000","message":"Heh, this made me think \"oh you shouldn\u0027t raise a class, it should be an instance!\" but it is indeed an instance 😛","commit_id":"c9a43c11f2ca069720d49e7a193e9f00ffee4527"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"65911035fc65f65f095ccb7514f96d34521c5521","unresolved":true,"context_lines":[{"line_number":1412,"context_line":"        return True"},{"line_number":1413,"context_line":""},{"line_number":1414,"context_line":"    def setUp(self):"},{"line_number":1415,"context_line":"        super().setUp()"},{"line_number":1416,"context_line":""},{"line_number":1417,"context_line":"    @mock.patch.object(utils.LOG, \u0027exception\u0027)"},{"line_number":1418,"context_line":"    def test_wrapped_success(self, fake_logger):"}],"source_content_type":"text/x-python","patch_set":4,"id":"8c883b45_c218ad8e","line":1415,"updated":"2025-03-20 01:09:53.000000000","message":"This seems unnecessary.","commit_id":"c9a43c11f2ca069720d49e7a193e9f00ffee4527"}],"nova/utils.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"65911035fc65f65f095ccb7514f96d34521c5521","unresolved":true,"context_lines":[{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":"    By default exit_handeler will call sys.exit and terminate the python"},{"line_number":1206,"context_line":"    interpereter after logging the exception. If an alternative exit_handeler"},{"line_number":1207,"context_line":"    is provided it should accept a single integer parameter."},{"line_number":1208,"context_line":"    \"\"\""},{"line_number":1209,"context_line":"    @functools.wraps(func)"},{"line_number":1210,"context_line":"    def wrapper(*args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"12d03733_9c553cdf","line":1207,"updated":"2025-03-20 01:09:53.000000000","message":"It looks like the docstring needs to be rewritten as I don\u0027t see any exit_handler use in here.","commit_id":"c9a43c11f2ca069720d49e7a193e9f00ffee4527"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d8957a7eb30efe52e56cfe5fab0d1fddf5271890","unresolved":true,"context_lines":[{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":"    By default exit_handeler will call sys.exit and terminate the python"},{"line_number":1206,"context_line":"    interpereter after logging the exception. If an alternative exit_handeler"},{"line_number":1207,"context_line":"    is provided it should accept a single integer parameter."},{"line_number":1208,"context_line":"    \"\"\""},{"line_number":1209,"context_line":"    @functools.wraps(func)"},{"line_number":1210,"context_line":"    def wrapper(*args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3050799c_a7f3ae0b","line":1207,"in_reply_to":"12d03733_9c553cdf","updated":"2025-03-20 01:39:25.000000000","message":"ya I rewrite thi in the last version \nI\u0027m going to abandon this in favour of https://review.opendev.org/c/openstack/nova/+/945028\n\n\nthe latest run with Apache didn\u0027t seem to work but the raise forever approach did so I think I\u0027ll clean that up if you want to take a look","commit_id":"c9a43c11f2ca069720d49e7a193e9f00ffee4527"}]}
