fix: remove lastActionType from execution state#363
Merged
Conversation
…n from actions array
chybisov
approved these changes
Mar 17, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Which Linear task is linked to this PR?
https://linear.app/lifi-linear/issue/EMB-310/bug-execution-status-failed-but-no-action-marked-failed-on-reload
Why was it implemented this way?
On retry after a failed step (e.g. RECEIVING_CHAIN wait-for-status), a subsequent failure set
execution.statusto FAILED without marking any action as FAILED, so the UI had no indication of which action failed.Causes:
BaseStepExecutoronly marked an action as FAILED when it could resolve it viastep.execution.lastActionType.lastActionTypewas cleared inprepareRestartand inStatusManager.initializeExecutionwhen resuming from FAILED, so the catch had no action to update.Solution: Since actions are added and updated in the order of creation, use the last action in
execution.actionsas the failing action and removelastActionTypefrom the codebase.Why: Single source of truth (pipeline order = last element is current). The bug came from
lastActionTypebeing cleared in multiple places while the actions array held the real state; removing the field removes that type of bugs. AfterprepareRestart, the last element is the action we're retrying, so marking it FAILED is correct. Alternative was to set/preservelastActionTypein prepareRestart and init, deriving from the array was chosen to avoid redundant state and keep a single source of truth.Checklist before requesting a review