)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3799397f4ba8f7599cc879b77e45adb1d02cc684","unresolved":true,"context_lines":[{"line_number":9,"context_line":"Service and clean steps that have requires_ramdisk\u003dFalse operate"},{"line_number":10,"context_line":"independently of the ramdisk agent (e.g., Redfish firmware updates)."},{"line_number":11,"context_line":"These steps should not be subject to heartbeat timeouts since they"},{"line_number":12,"context_line":"do not require the agent to be running."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Previously, the _check_servicewait_timeouts and _check_cleanwait_timeouts"},{"line_number":15,"context_line":"periodic tasks would timeout and fail these steps if no agent heartbeat"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"8a8eb175_289ebcd0","line":12,"updated":"2026-01-05 14:21:49.000000000","message":"The code you\u0027re modifying is not directly related to heartbeat timeouts, it\u0027s using the node\u0027s provision_updated_at, which is updated on heartbeat using touch_provisioning.\n\nMaybe what we need to do instead is to make sure we touch_provisioning every time some positive progress is happening? Or do we want to complete opt out of any *WAIT timeout?\n\nEven in this case, I\u0027d rather not hardcode the knowledge about steps into the generic call - see my other comment.","commit_id":"6619861b941488d9089cc36cb69f18c810cefc27"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"9100cd19d3adf70b7f7b4beb75021c03d206c18b","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Service and clean steps that have requires_ramdisk\u003dFalse operate"},{"line_number":10,"context_line":"independently of the ramdisk agent (e.g., Redfish firmware updates)."},{"line_number":11,"context_line":"These steps should not be subject to heartbeat timeouts since they"},{"line_number":12,"context_line":"do not require the agent to be running."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Previously, the _check_servicewait_timeouts and _check_cleanwait_timeouts"},{"line_number":15,"context_line":"periodic tasks would timeout and fail these steps if no agent heartbeat"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"17d3cd70_0e4b30a9","line":12,"in_reply_to":"8a8eb175_289ebcd0","updated":"2026-01-07 19:33:03.000000000","message":"Done","commit_id":"6619861b941488d9089cc36cb69f18c810cefc27"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"00c2c73679753c0f9cc50125e358f13dc95a6f88","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"1752ece7_5e639525","updated":"2025-12-18 14:54:50.000000000","message":"Unit tests and release note please.","commit_id":"11a23e0070ee72bce2f412f690c8266b53903a88"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"9100cd19d3adf70b7f7b4beb75021c03d206c18b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"98c43ea6_59170e6f","updated":"2026-01-07 19:33:03.000000000","message":"Thank you for your review Dmitry. Pushing updated version.","commit_id":"e7260d5bf4877b7f1f1592c71b3b66aff6cbc51e"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"6ffbf898a7f52259a5d88106ba5f878e41f8677e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"5ffd3654_4212040c","updated":"2026-01-06 10:40:02.000000000","message":"recheck metal3-integration","commit_id":"e7260d5bf4877b7f1f1592c71b3b66aff6cbc51e"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"6beeac1951af866fc25fd24215a50cbddb45dd12","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"d6452266_edf84628","updated":"2026-01-07 19:46:37.000000000","message":"Assuming this works, the code itself LGTM","commit_id":"49aebe0db1eb54096233df95efca6a547d42173a"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"606532a204904e956b87924b66d155de9f0f1bc9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"e9a3070a_8bc21e98","updated":"2026-01-08 08:36:56.000000000","message":"recheck metal3-integration","commit_id":"49aebe0db1eb54096233df95efca6a547d42173a"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"0d6372630b21283b2859afffb9760d8a041f8fc6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"e0f6aa33_86c29b4a","in_reply_to":"d6452266_edf84628","updated":"2026-01-20 16:18:42.000000000","message":"Done","commit_id":"49aebe0db1eb54096233df95efca6a547d42173a"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"ef7bd806c0158659344b58f6e094a92d1c9509cc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"9a21f861_bfaf09b5","updated":"2026-01-21 07:23:21.000000000","message":"recheck","commit_id":"54ca5a3b4c5d26be95762aabda2e1572ba2ad120"}],"ironic/conductor/base_manager.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3799397f4ba8f7599cc879b77e45adb1d02cc684","unresolved":true,"context_lines":[{"line_number":651,"context_line":"                    # For SERVICEWAIT and CLEANWAIT, check if the current step"},{"line_number":652,"context_line":"                    # requires ramdisk. Steps with require_ramdisk\u003dFalse"},{"line_number":653,"context_line":"                    # should not timeout based on heartbeat since they operate"},{"line_number":654,"context_line":"                    # indenpndently of the ramdisk agent."},{"line_number":655,"context_line":"                    step \u003d None"},{"line_number":656,"context_line":"                    if (task.node.provision_state \u003d\u003d states.SERVICEWAIT"},{"line_number":657,"context_line":"                        and task.node.service_step):"}],"source_content_type":"text/x-python","patch_set":2,"id":"34b33cc0_5264a8c1","line":654,"updated":"2026-01-05 14:21:49.000000000","message":"I don\u0027t quite like inserting this logic here because this method is generic and is not limited to timeouts in *WAIT state. For example, it\u0027s used for orphaned nodes, where it should work regardless of the ramdisk.","commit_id":"6619861b941488d9089cc36cb69f18c810cefc27"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"9100cd19d3adf70b7f7b4beb75021c03d206c18b","unresolved":false,"context_lines":[{"line_number":651,"context_line":"                    # For SERVICEWAIT and CLEANWAIT, check if the current step"},{"line_number":652,"context_line":"                    # requires ramdisk. Steps with require_ramdisk\u003dFalse"},{"line_number":653,"context_line":"                    # should not timeout based on heartbeat since they operate"},{"line_number":654,"context_line":"                    # indenpndently of the ramdisk agent."},{"line_number":655,"context_line":"                    step \u003d None"},{"line_number":656,"context_line":"                    if (task.node.provision_state \u003d\u003d states.SERVICEWAIT"},{"line_number":657,"context_line":"                        and task.node.service_step):"}],"source_content_type":"text/x-python","patch_set":2,"id":"f82f3715_4088cc84","line":654,"in_reply_to":"34b33cc0_5264a8c1","updated":"2026-01-07 19:33:03.000000000","message":"Done","commit_id":"6619861b941488d9089cc36cb69f18c810cefc27"}],"ironic/drivers/modules/redfish/firmware.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"076da8368307f0a5eb0fd50472836b7ebb6fae6f","unresolved":true,"context_lines":[{"line_number":1191,"context_line":"        # Touch provisioning to indicate progress is being monitored."},{"line_number":1192,"context_line":"        # This prevents heartbeat timeout from triggering for steps that"},{"line_number":1193,"context_line":"        # don\u0027t require the ramdisk agent (requires_ramdisk\u003dFalse)."},{"line_number":1194,"context_line":"        node.touch_provisioning()"},{"line_number":1195,"context_line":""},{"line_number":1196,"context_line":"        settings \u003d node.driver_internal_info[\u0027redfish_fw_updates\u0027]"},{"line_number":1197,"context_line":"        current_update \u003d settings[0]"}],"source_content_type":"text/x-python","patch_set":4,"id":"a97c2313_c4f649d7","line":1194,"updated":"2026-01-07 17:47:11.000000000","message":"Maybe move it to below line 1208? Otherwise, if the BMC is not responsive, the process will never finish.\n\nIn fact, do we have any timeout here other than the SERVICEWAIT/CLEANWAIT timeout?","commit_id":"e7260d5bf4877b7f1f1592c71b3b66aff6cbc51e"},{"author":{"_account_id":32177,"name":"Jacob Anders","email":"jacob-anders-dev@proton.me","username":"janders"},"change_message_id":"9100cd19d3adf70b7f7b4beb75021c03d206c18b","unresolved":false,"context_lines":[{"line_number":1191,"context_line":"        # Touch provisioning to indicate progress is being monitored."},{"line_number":1192,"context_line":"        # This prevents heartbeat timeout from triggering for steps that"},{"line_number":1193,"context_line":"        # don\u0027t require the ramdisk agent (requires_ramdisk\u003dFalse)."},{"line_number":1194,"context_line":"        node.touch_provisioning()"},{"line_number":1195,"context_line":""},{"line_number":1196,"context_line":"        settings \u003d node.driver_internal_info[\u0027redfish_fw_updates\u0027]"},{"line_number":1197,"context_line":"        current_update \u003d settings[0]"}],"source_content_type":"text/x-python","patch_set":4,"id":"6639e6e0_e2a9a66e","line":1194,"in_reply_to":"a97c2313_c4f649d7","updated":"2026-01-07 19:33:03.000000000","message":"Function call moved.\nGood point on the timeout. Adding code that handles this, although I\u0027m not sure if it makes sense or if I made it overkill. I will see what you\u0027re thinking and can keep/modify/remove it.","commit_id":"e7260d5bf4877b7f1f1592c71b3b66aff6cbc51e"}]}
