)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"bd592c7f5847ba966a0c3bf5410b9c841662fc25","unresolved":true,"context_lines":[{"line_number":17,"context_line":"did not catch DiscoveryFailure (keystone 504/503), so it propagated raw."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Fixes:"},{"line_number":20,"context_line":"- host_failure.py: move get_server/lock_server inside the try/except so"},{"line_number":21,"context_line":"  failures mark the vmove FAILED instead of killing the thread silently"},{"line_number":22,"context_line":"- host_failure.py: wrap unlock_server (finally block) in its own"},{"line_number":23,"context_line":"  try/except so a transient failure can\u0027t escape to greenpool and leave"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"a6c87053_920b5d53","line":20,"updated":"2026-07-05 15:21:46.000000000","message":"As mentioned in my comment in release note, please describe the behavior, not code change.","commit_id":"2a513db6cca44bd8aaab3f35288467e067cda902"},{"author":{"_account_id":35761,"name":"Guillaume Boutry","display_name":"gboutry","email":"guillaume.boutry@canonical.com","username":"gboutry"},"change_message_id":"e02f8d00c70d63799e45863430a1080ab9684b00","unresolved":false,"context_lines":[{"line_number":17,"context_line":"did not catch DiscoveryFailure (keystone 504/503), so it propagated raw."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Fixes:"},{"line_number":20,"context_line":"- host_failure.py: move get_server/lock_server inside the try/except so"},{"line_number":21,"context_line":"  failures mark the vmove FAILED instead of killing the thread silently"},{"line_number":22,"context_line":"- host_failure.py: wrap unlock_server (finally block) in its own"},{"line_number":23,"context_line":"  try/except so a transient failure can\u0027t escape to greenpool and leave"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bab4736e_37c40e77","line":20,"in_reply_to":"a6c87053_920b5d53","updated":"2026-07-09 09:46:20.000000000","message":"Done","commit_id":"2a513db6cca44bd8aaab3f35288467e067cda902"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"bd592c7f5847ba966a0c3bf5410b9c841662fc25","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"df279b4c_3a48ba66","updated":"2026-07-05 15:21:46.000000000","message":"The failure in release note build is real. Also its content should be adjusted so that it is suitable for users/operators, not to maintainers/developers.","commit_id":"2a513db6cca44bd8aaab3f35288467e067cda902"},{"author":{"_account_id":35761,"name":"Guillaume Boutry","display_name":"gboutry","email":"guillaume.boutry@canonical.com","username":"gboutry"},"change_message_id":"e02f8d00c70d63799e45863430a1080ab9684b00","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"731431cf_65f9f9bc","in_reply_to":"df279b4c_3a48ba66","updated":"2026-07-09 09:46:20.000000000","message":"Done","commit_id":"2a513db6cca44bd8aaab3f35288467e067cda902"},{"author":{"_account_id":35761,"name":"Guillaume Boutry","display_name":"gboutry","email":"guillaume.boutry@canonical.com","username":"gboutry"},"change_message_id":"e02f8d00c70d63799e45863430a1080ab9684b00","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"bd18052e_d73579e5","updated":"2026-07-09 09:46:20.000000000","message":"Thanks for the review @kajinamit@oss.nttdata.com, I have updated the commit message + release notes.","commit_id":"b99d2af7360f99843e23de9b69c1d4c49e8914ab"}],"masakari/engine/drivers/taskflow/host_failure.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"c332b07247fb80d33c370622c1b5c87d76314afe","unresolved":true,"context_lines":[{"line_number":438,"context_line":"            # status was updated). Treat them as failures so the notification"},{"line_number":439,"context_line":"            # is not marked \u0027finished\u0027 with VMs unaccounted for (LP#2158101)."},{"line_number":440,"context_line":"            pending_vmoves \u003d [i.instance_uuid for i in all_vmoves"},{"line_number":441,"context_line":"                    if i.status not in (fields.VMoveStatus.SUCCEEDED,"},{"line_number":442,"context_line":"                                        fields.VMoveStatus.FAILED)]"},{"line_number":443,"context_line":"            if pending_vmoves:"},{"line_number":444,"context_line":"                msg \u003d (\"Instances \u0027%(instance_list)s\u0027 were not evacuated \""},{"line_number":445,"context_line":"                       \"from host \u0027%(host_name)s\u0027: vmove status is still \""}],"source_content_type":"text/x-python","patch_set":3,"id":"a69ae295_392adf7b","line":442,"range":{"start_line":441,"start_character":32,"end_line":442,"end_character":67},"updated":"2026-07-14 16:52:03.000000000","message":"should we rather check `\u003d\u003d fields.VMoveStatus.PENDING` so that it doesn\u0027t catch the other statuses like IGNORED ?","commit_id":"b99d2af7360f99843e23de9b69c1d4c49e8914ab"}],"releasenotes/notes/bug-2158101-471d08c768aeb4a8.yaml":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"bd592c7f5847ba966a0c3bf5410b9c841662fc25","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixes an issue where masakari silently dropped instances during"},{"line_number":5,"context_line":"    ``COMPUTE_HOST`` recovery when a transient keystone or nova failure"},{"line_number":6,"context_line":"    occurred during ``get_server`` or ``lock_server`` calls at the start of"},{"line_number":7,"context_line":"    the evacuation flow. The exception was raised outside the try/except"},{"line_number":8,"context_line":"    block in ``EvacuateInstancesTask._evacuate_and_confirm`` and was"},{"line_number":9,"context_line":"    swallowed by ``eventlet.greenpool.spawn_n``, leaving the vmove in"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"850668d0_8032ed28","line":6,"range":{"start_line":6,"start_character":20,"end_line":6,"end_character":54},"updated":"2026-07-05 15:21:46.000000000","message":"release note is for users. Describing internal methods are too verbose. This should be for example `API calls`","commit_id":"2a513db6cca44bd8aaab3f35288467e067cda902"},{"author":{"_account_id":35761,"name":"Guillaume Boutry","display_name":"gboutry","email":"guillaume.boutry@canonical.com","username":"gboutry"},"change_message_id":"e02f8d00c70d63799e45863430a1080ab9684b00","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixes an issue where masakari silently dropped instances during"},{"line_number":5,"context_line":"    ``COMPUTE_HOST`` recovery when a transient keystone or nova failure"},{"line_number":6,"context_line":"    occurred during ``get_server`` or ``lock_server`` calls at the start of"},{"line_number":7,"context_line":"    the evacuation flow. The exception was raised outside the try/except"},{"line_number":8,"context_line":"    block in ``EvacuateInstancesTask._evacuate_and_confirm`` and was"},{"line_number":9,"context_line":"    swallowed by ``eventlet.greenpool.spawn_n``, leaving the vmove in"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"885929da_b01857b7","line":6,"range":{"start_line":6,"start_character":20,"end_line":6,"end_character":54},"in_reply_to":"850668d0_8032ed28","updated":"2026-07-09 09:46:20.000000000","message":"Done","commit_id":"2a513db6cca44bd8aaab3f35288467e067cda902"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"bd592c7f5847ba966a0c3bf5410b9c841662fc25","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    Fixes an issue where masakari silently dropped instances during"},{"line_number":5,"context_line":"    ``COMPUTE_HOST`` recovery when a transient keystone or nova failure"},{"line_number":6,"context_line":"    occurred during ``get_server`` or ``lock_server`` calls at the start of"},{"line_number":7,"context_line":"    the evacuation flow. The exception was raised outside the try/except"},{"line_number":8,"context_line":"    block in ``EvacuateInstancesTask._evacuate_and_confirm`` and was"},{"line_number":9,"context_line":"    swallowed by ``eventlet.greenpool.spawn_n``, leaving the vmove in"},{"line_number":10,"context_line":"    ``PENDING`` status and the notification marked as ``finished`` with"},{"line_number":11,"context_line":"    the instance unaccounted for."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":2,"id":"1281fe83_98395c42","line":9,"range":{"start_line":7,"start_character":25,"end_line":9,"end_character":47},"updated":"2026-07-05 15:21:46.000000000","message":"ditto","commit_id":"2a513db6cca44bd8aaab3f35288467e067cda902"},{"author":{"_account_id":35761,"name":"Guillaume Boutry","display_name":"gboutry","email":"guillaume.boutry@canonical.com","username":"gboutry"},"change_message_id":"e02f8d00c70d63799e45863430a1080ab9684b00","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Fixes an issue where masakari silently dropped instances during"},{"line_number":5,"context_line":"    ``COMPUTE_HOST`` recovery when a transient keystone or nova failure"},{"line_number":6,"context_line":"    occurred during ``get_server`` or ``lock_server`` calls at the start of"},{"line_number":7,"context_line":"    the evacuation flow. The exception was raised outside the try/except"},{"line_number":8,"context_line":"    block in ``EvacuateInstancesTask._evacuate_and_confirm`` and was"},{"line_number":9,"context_line":"    swallowed by ``eventlet.greenpool.spawn_n``, leaving the vmove in"},{"line_number":10,"context_line":"    ``PENDING`` status and the notification marked as ``finished`` with"},{"line_number":11,"context_line":"    the instance unaccounted for."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":2,"id":"211fc41a_26f1bb19","line":9,"range":{"start_line":7,"start_character":25,"end_line":9,"end_character":47},"in_reply_to":"1281fe83_98395c42","updated":"2026-07-09 09:46:20.000000000","message":"Done","commit_id":"2a513db6cca44bd8aaab3f35288467e067cda902"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"bd592c7f5847ba966a0c3bf5410b9c841662fc25","unresolved":true,"context_lines":[{"line_number":10,"context_line":"    ``PENDING`` status and the notification marked as ``finished`` with"},{"line_number":11,"context_line":"    the instance unaccounted for."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    The following related issues are also fixed:"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    - ``unlock_server`` in the ``finally`` block of"},{"line_number":16,"context_line":"      ``_evacuate_and_confirm`` is now wrapped in its own try/except so a"},{"line_number":17,"context_line":"      transient failure during cleanup can no longer escape to greenpool and"},{"line_number":18,"context_line":"      leave the instance locked."},{"line_number":19,"context_line":"    - The completion check in ``EvacuateInstancesTask.execute`` now raises"},{"line_number":20,"context_line":"      ``HostRecoveryFailureException`` if any vmove is still ``PENDING``"},{"line_number":21,"context_line":"      after ``waitall()``, so the notification cannot be marked"},{"line_number":22,"context_line":"      ``finished`` with VMs silently unaccounted for."},{"line_number":23,"context_line":"    - ``masakari.compute.nova.translate_nova_exception`` now catches"},{"line_number":24,"context_line":"      ``keystoneauth1.exceptions.discovery.DiscoveryFailure`` (raised on"},{"line_number":25,"context_line":"      keystone 504/503 during endpoint discovery) and translates it to"},{"line_number":26,"context_line":"      ``MasakariException`` so it is handled by the engine instead of"},{"line_number":27,"context_line":"      propagating raw."},{"line_number":28,"context_line":"    `LP#2158101 \u003chttps://launchpad.net/bugs/2158101\u003e`__"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"978f083c_d996a80b","line":27,"range":{"start_line":13,"start_character":0,"end_line":27,"end_character":22},"updated":"2026-07-05 15:21:46.000000000","message":"Please describe the behavior, not code implementations","commit_id":"2a513db6cca44bd8aaab3f35288467e067cda902"},{"author":{"_account_id":35761,"name":"Guillaume Boutry","display_name":"gboutry","email":"guillaume.boutry@canonical.com","username":"gboutry"},"change_message_id":"e02f8d00c70d63799e45863430a1080ab9684b00","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    ``PENDING`` status and the notification marked as ``finished`` with"},{"line_number":11,"context_line":"    the instance unaccounted for."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    The following related issues are also fixed:"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    - ``unlock_server`` in the ``finally`` block of"},{"line_number":16,"context_line":"      ``_evacuate_and_confirm`` is now wrapped in its own try/except so a"},{"line_number":17,"context_line":"      transient failure during cleanup can no longer escape to greenpool and"},{"line_number":18,"context_line":"      leave the instance locked."},{"line_number":19,"context_line":"    - The completion check in ``EvacuateInstancesTask.execute`` now raises"},{"line_number":20,"context_line":"      ``HostRecoveryFailureException`` if any vmove is still ``PENDING``"},{"line_number":21,"context_line":"      after ``waitall()``, so the notification cannot be marked"},{"line_number":22,"context_line":"      ``finished`` with VMs silently unaccounted for."},{"line_number":23,"context_line":"    - ``masakari.compute.nova.translate_nova_exception`` now catches"},{"line_number":24,"context_line":"      ``keystoneauth1.exceptions.discovery.DiscoveryFailure`` (raised on"},{"line_number":25,"context_line":"      keystone 504/503 during endpoint discovery) and translates it to"},{"line_number":26,"context_line":"      ``MasakariException`` so it is handled by the engine instead of"},{"line_number":27,"context_line":"      propagating raw."},{"line_number":28,"context_line":"    `LP#2158101 \u003chttps://launchpad.net/bugs/2158101\u003e`__"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"5d15612a_99dcd412","line":27,"range":{"start_line":13,"start_character":0,"end_line":27,"end_character":22},"in_reply_to":"978f083c_d996a80b","updated":"2026-07-09 09:46:20.000000000","message":"Done","commit_id":"2a513db6cca44bd8aaab3f35288467e067cda902"}]}
