)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":38176,"name":"Sei Sano","display_name":"say3no","email":"sei.sano@ntt.com","username":"say3no"},"change_message_id":"66dff11b5164993840d49565103d1fdf6e78a1fc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"b6552516_8bd8bbcf","updated":"2026-10-09 05:01:46.000000000","message":"Thanks, I agree with dropping our own implementation now that oslo.concurrency supports non-blocking locks. But this changes the default behavior, so -1 for now.\n\nThe old utils.synchronized defaults to blocking\u003dFalse and raises LockAlreadyAcquired when the lock is held. lockutils.synchronized defaults to blocking\u003dTrue, and with blocking\u003dFalse it raises AcquireLockFailedException instead.\n\nThis matters for the reserved_host recovery:\n\n* masakari/engine/drivers/taskflow/host_failure.py uses @utils.synchronized(lock_name) without blocking, so\ntoday a second recovery targeting the same reserved host fails immediately.\n* masakari/engine/drivers/taskflow/driver.py catches LockAlreadyAcquired in _execute_rh_workflow and turns it into HostRecoveryFailureException.\n* With this change the second recovery waits until the first evacuation finishes and then evacuates to the same reserved host. The except clause in driver.py becomes dead code.\n\nmasakari/engine/manager.py already passes blocking\u003dTrue explicitly, so it is not affected.\n\nCould you:\n\n* pass blocking\u003dFalse in host_failure.py\n* catch AcquireLockFailedException in driver.py (and drop LockAlreadyAcquired if nothing else uses it)\n* add a test for the lock-held path, since nothing covers it today and CI could not catch this\n\nNits:\n\n* typo in the subject: \"syncrhonized\"\n* please add a short body explaining why, e.g. oslo.concurrency supports blocking\u003dFalse since 4.5.0, so we no longer need our own wrapper","commit_id":"60d738f5befabb46eda1ffc7ec599e5ebbf35ad6"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"cada53ef9009dbf95d78fbd56a8e4d8bef73f1b1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"abde772c_82e6c5fc","updated":"2026-03-25 10:21:48.000000000","message":"recheck CI has been fixed","commit_id":"60d738f5befabb46eda1ffc7ec599e5ebbf35ad6"}]}
