Bug fixes batch (#18457)
Fixes https://github.com/twentyhq/twenty/issues/18181 Fixes https://github.com/twentyhq/twenty/issues/16842 Iterators remain running, which prevent the stopping state to eventually become stopped Fixes https://github.com/twentyhq/twenty/issues/18186
This commit is contained in:
+32
@@ -0,0 +1,32 @@
|
||||
import {
|
||||
StepStatus,
|
||||
type WorkflowRunStepInfo,
|
||||
type WorkflowRunStepInfos,
|
||||
} from 'twenty-shared/workflow';
|
||||
|
||||
import { isWorkflowIteratorAction } from 'src/modules/workflow/workflow-executor/workflow-actions/iterator/guards/is-workflow-iterator-action.guard';
|
||||
import { type WorkflowAction } from 'src/modules/workflow/workflow-executor/workflow-actions/types/workflow-action.type';
|
||||
|
||||
export const setAllIteratorsStepInfosAsStopped = ({
|
||||
stepInfos,
|
||||
steps,
|
||||
}: {
|
||||
stepInfos: WorkflowRunStepInfos;
|
||||
steps: WorkflowAction[];
|
||||
}): Record<string, WorkflowRunStepInfo> => {
|
||||
const stoppedStepInfos: Record<string, WorkflowRunStepInfo> = {};
|
||||
|
||||
for (const step of steps) {
|
||||
if (
|
||||
stepInfos[step.id]?.status === StepStatus.RUNNING &&
|
||||
isWorkflowIteratorAction(step)
|
||||
) {
|
||||
stoppedStepInfos[step.id] = {
|
||||
...stepInfos[step.id],
|
||||
status: StepStatus.STOPPED,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
return stoppedStepInfos;
|
||||
};
|
||||
+19
-6
@@ -16,6 +16,7 @@ import {
|
||||
WorkflowVersionStepExceptionCode,
|
||||
} from 'src/modules/workflow/common/exceptions/workflow-version-step.exception';
|
||||
import { WorkflowRunStatus } from 'src/modules/workflow/common/standard-objects/workflow-run.workspace-entity';
|
||||
import { setAllIteratorsStepInfosAsStopped } from 'src/modules/workflow/common/utils/set-all-iterators-step-infos-as-stopped.util';
|
||||
import { workflowHasRunningSteps } from 'src/modules/workflow/common/utils/workflow-has-running-steps.util';
|
||||
import { WorkflowCommonWorkspaceService } from 'src/modules/workflow/common/workspace-services/workflow-common.workspace-service';
|
||||
import { WorkflowVersionStepOperationsWorkspaceService } from 'src/modules/workflow/workflow-builder/workflow-version-step/workflow-version-step-operations.workspace-service';
|
||||
@@ -218,17 +219,29 @@ export class WorkflowRunnerWorkspaceService {
|
||||
|
||||
let newStatus: WorkflowRunStatus;
|
||||
|
||||
if (
|
||||
workflowHasRunningSteps({
|
||||
stepInfos: workflowRun.state.stepInfos,
|
||||
steps: workflowRun.state.flow.steps,
|
||||
})
|
||||
) {
|
||||
const stepInfos = workflowRun.state.stepInfos;
|
||||
const steps = workflowRun.state.flow.steps;
|
||||
|
||||
if (workflowHasRunningSteps({ stepInfos, steps })) {
|
||||
const stoppedIteratorStepInfos = setAllIteratorsStepInfosAsStopped({
|
||||
stepInfos,
|
||||
steps,
|
||||
});
|
||||
|
||||
const mergedStepInfos = {
|
||||
...stepInfos,
|
||||
...stoppedIteratorStepInfos,
|
||||
};
|
||||
|
||||
await this.workflowRunWorkspaceService.updateWorkflowRun({
|
||||
workflowRunId,
|
||||
workspaceId,
|
||||
partialUpdate: {
|
||||
status: WorkflowRunStatus.STOPPING,
|
||||
state: {
|
||||
...workflowRun.state,
|
||||
stepInfos: mergedStepInfos,
|
||||
},
|
||||
},
|
||||
});
|
||||
newStatus = WorkflowRunStatus.STOPPING;
|
||||
|
||||
Reference in New Issue
Block a user