diff --git a/packages/cli/src/WorkflowExecuteAdditionalData.ts b/packages/cli/src/WorkflowExecuteAdditionalData.ts index f5291be49f..cf21a80ca4 100644 --- a/packages/cli/src/WorkflowExecuteAdditionalData.ts +++ b/packages/cli/src/WorkflowExecuteAdditionalData.ts @@ -472,7 +472,6 @@ export function hookFunctionsPreExecute(parentProcessMode?: string): IWorkflowEx fullExecutionData.status = 'running'; const flattenedExecutionData = ResponseHelper.flattenExecutionData(fullExecutionData); - await Db.collections.Execution.update( this.executionId, flattenedExecutionData as IExecutionFlattedDb, @@ -578,7 +577,11 @@ function hookFunctionsSave(parentProcessMode?: string): IWorkflowExecuteHooks { saveDataSuccessExecution; } - const workflowDidSucceed = !fullRunData.data.resultData.error; + const workflowHasCrashed = fullRunData.status === 'crashed'; + const workflowDidSucceed = !fullRunData.data.resultData.error && !workflowHasCrashed; + let workflowStatusFinal: ExecutionStatus = workflowDidSucceed ? 'success' : 'failed'; + if (workflowHasCrashed) workflowStatusFinal = 'crashed'; + if ( (workflowDidSucceed && saveDataSuccessExecution === 'none') || (!workflowDidSucceed && saveDataErrorExecution === 'none') @@ -626,7 +629,7 @@ function hookFunctionsSave(parentProcessMode?: string): IWorkflowExecuteHooks { stoppedAt: fullRunData.stoppedAt, workflowData: pristineWorkflowData, waitTill: fullRunData.waitTill, - status: fullRunData.status, + status: workflowStatusFinal, }; if (this.retryOf !== undefined) { diff --git a/packages/cli/src/databases/migrations/mysqldb/1677236788851-UpdateRunningExecutionStatus.ts b/packages/cli/src/databases/migrations/mysqldb/1677236788851-UpdateRunningExecutionStatus.ts new file mode 100644 index 0000000000..12225e7623 --- /dev/null +++ b/packages/cli/src/databases/migrations/mysqldb/1677236788851-UpdateRunningExecutionStatus.ts @@ -0,0 +1,22 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; +import { logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; +import config from '@/config'; + +export class UpdateRunningExecutionStatus1677236788851 implements MigrationInterface { + name = 'UpdateRunningExecutionStatus1677236788851'; + public async up(queryRunner: QueryRunner): Promise { + logMigrationStart(this.name); + const tablePrefix = config.getEnv('database.tablePrefix'); + + await queryRunner.query( + `UPDATE \`${tablePrefix}execution_entity\` SET status='failed' WHERE status = 'running' AND finished=0 AND \`stoppedAt\` IS NOT NULL;`, + ); + await queryRunner.query( + `UPDATE \`${tablePrefix}execution_entity\` SET status='success' WHERE status = 'running' AND finished=1 AND \`stoppedAt\` IS NOT NULL;`, + ); + + logMigrationEnd(this.name); + } + + public async down(queryRunner: QueryRunner): Promise {} +} diff --git a/packages/cli/src/databases/migrations/mysqldb/index.ts b/packages/cli/src/databases/migrations/mysqldb/index.ts index db7ab0ff41..b67441e08f 100644 --- a/packages/cli/src/databases/migrations/mysqldb/index.ts +++ b/packages/cli/src/databases/migrations/mysqldb/index.ts @@ -33,6 +33,7 @@ import { CreateLdapEntities1674509946020 } from './1674509946020-CreateLdapEntit import { PurgeInvalidWorkflowConnections1675940580449 } from './1675940580449-PurgeInvalidWorkflowConnections'; import { AddStatusToExecutions1674138566000 } from './1674138566000-AddStatusToExecutions'; import { MigrateExecutionStatus1676996103000 } from './1676996103000-MigrateExecutionStatus'; +import { UpdateRunningExecutionStatus1677236788851 } from './1677236788851-UpdateRunningExecutionStatus'; export const mysqlMigrations = [ InitialMigration1588157391238, @@ -70,4 +71,5 @@ export const mysqlMigrations = [ PurgeInvalidWorkflowConnections1675940580449, AddStatusToExecutions1674138566000, MigrateExecutionStatus1676996103000, + UpdateRunningExecutionStatus1677236788851, ]; diff --git a/packages/cli/src/databases/migrations/postgresdb/1677236854063-UpdateRunningExecutionStatus.ts b/packages/cli/src/databases/migrations/postgresdb/1677236854063-UpdateRunningExecutionStatus.ts new file mode 100644 index 0000000000..cc01754903 --- /dev/null +++ b/packages/cli/src/databases/migrations/postgresdb/1677236854063-UpdateRunningExecutionStatus.ts @@ -0,0 +1,22 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; +import { logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; +import config from '@/config'; + +export class UpdateRunningExecutionStatus1677236854063 implements MigrationInterface { + name = 'UpdateRunningExecutionStatus1677236854063'; + public async up(queryRunner: QueryRunner): Promise { + logMigrationStart(this.name); + const tablePrefix = config.getEnv('database.tablePrefix'); + + await queryRunner.query( + `UPDATE "${tablePrefix}execution_entity" SET "status" = 'failed' WHERE "status" = 'running' AND "finished"=false AND "stoppedAt" IS NOT NULL;`, + ); + await queryRunner.query( + `UPDATE "${tablePrefix}execution_entity" SET "status" = 'success' WHERE "status" = 'running' AND "finished"=true AND "stoppedAt" IS NOT NULL;`, + ); + + logMigrationEnd(this.name); + } + + public async down(queryRunner: QueryRunner): Promise {} +} diff --git a/packages/cli/src/databases/migrations/postgresdb/index.ts b/packages/cli/src/databases/migrations/postgresdb/index.ts index 32b48f626c..9aa75b16ed 100644 --- a/packages/cli/src/databases/migrations/postgresdb/index.ts +++ b/packages/cli/src/databases/migrations/postgresdb/index.ts @@ -31,6 +31,7 @@ import { CreateLdapEntities1674509946020 } from './1674509946020-CreateLdapEntit import { PurgeInvalidWorkflowConnections1675940580449 } from './1675940580449-PurgeInvalidWorkflowConnections'; import { AddStatusToExecutions1674138566000 } from './1674138566000-AddStatusToExecutions'; import { MigrateExecutionStatus1676996103000 } from './1676996103000-MigrateExecutionStatus'; +import { UpdateRunningExecutionStatus1677236854063 } from './1677236854063-UpdateRunningExecutionStatus'; export const postgresMigrations = [ InitialMigration1587669153312, @@ -66,4 +67,5 @@ export const postgresMigrations = [ PurgeInvalidWorkflowConnections1675940580449, AddStatusToExecutions1674138566000, MigrateExecutionStatus1676996103000, + UpdateRunningExecutionStatus1677236854063, ]; diff --git a/packages/cli/src/databases/migrations/sqlite/1677237073720-UpdateRunningExecutionStatus.ts b/packages/cli/src/databases/migrations/sqlite/1677237073720-UpdateRunningExecutionStatus.ts new file mode 100644 index 0000000000..335fd27c1f --- /dev/null +++ b/packages/cli/src/databases/migrations/sqlite/1677237073720-UpdateRunningExecutionStatus.ts @@ -0,0 +1,22 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; +import { logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; +import config from '@/config'; + +export class UpdateRunningExecutionStatus1677237073720 implements MigrationInterface { + name = 'UpdateRunningExecutionStatus1677237073720'; + public async up(queryRunner: QueryRunner): Promise { + logMigrationStart(this.name); + const tablePrefix = config.getEnv('database.tablePrefix'); + + await queryRunner.query( + `UPDATE "${tablePrefix}execution_entity" SET "status" = 'failed' WHERE "status" = 'running' AND "finished"=0 AND "stoppedAt" IS NOT NULL;`, + ); + await queryRunner.query( + `UPDATE "${tablePrefix}execution_entity" SET "status" = 'success' WHERE "status" = 'running' AND "finished"=1 AND "stoppedAt" IS NOT NULL;`, + ); + + logMigrationEnd(this.name); + } + + public async down(queryRunner: QueryRunner): Promise {} +} diff --git a/packages/cli/src/databases/migrations/sqlite/index.ts b/packages/cli/src/databases/migrations/sqlite/index.ts index eadb90effc..42782c2430 100644 --- a/packages/cli/src/databases/migrations/sqlite/index.ts +++ b/packages/cli/src/databases/migrations/sqlite/index.ts @@ -30,6 +30,7 @@ import { CreateLdapEntities1674509946020 } from './1674509946020-CreateLdapEntit import { PurgeInvalidWorkflowConnections1675940580449 } from './1675940580449-PurgeInvalidWorkflowConnections'; import { AddStatusToExecutions1674138566000 } from './1674138566000-AddStatusToExecutions'; import { MigrateExecutionStatus1676996103000 } from './1676996103000-MigrateExecutionStatus'; +import { UpdateRunningExecutionStatus1677237073720 } from './1677237073720-UpdateRunningExecutionStatus'; const sqliteMigrations = [ InitialMigration1588102412422, @@ -64,6 +65,7 @@ const sqliteMigrations = [ PurgeInvalidWorkflowConnections1675940580449, AddStatusToExecutions1674138566000, MigrateExecutionStatus1676996103000, + UpdateRunningExecutionStatus1677237073720, ]; export { sqliteMigrations };