You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Cloud Task在SCDF 2.11.2执行失败,报无效TaskExecution ID

Spring Cloud Task多数据源场景下SCDF 2.11.2中"Invalid TaskExecution, ID X not found"问题修复

我开发了一个基于Spring Boot 3 + Java 17的Spring Cloud Task,用于读取平面文件并插入数据库,属于多数据源场景。该任务在Spring Cloud Data Flow(SCDF) Server 2.11.2上运行时抛出Invalid TaskExecution, ID 50 not found异常,但在SCDF 2.10版本中可正常执行。

调试发现核心问题:Task相关表的前缀始终为默认的TASK_,而非预期的BOOT3_TASK_,即使通过Spring配置文件设置前缀也未生效。

异常栈信息

Caused by: java.lang.IllegalArgumentException: Invalid TaskExecution, ID 50 not found
    at org.springframework.util.Assert.notNull(Assert.java:172) ~[spring-core-6.1.3.jar!/:6.1.3]
    at org.springframework.cloud.task.listener.TaskLifecycleListener.doTaskStart(TaskLifecycleListener.java:184) ~[!/:0.0.1-SNAPSHOT]
    at org.springframework.cloud.task.listener.TaskLifecycleListener.start(TaskLifecycleListener.java:312) ~[!/:0.0.1-SNAPSHOT]
    at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:284) ~[spring-context-6.1.3.jar!/:6.1.3]
    ... 19 common frames omitted

应用配置(application.yml)

spring:
  datasource-scdf:
    url: "jdbc:postgresql://localhost:5432/dataflow?schema=public"
    username: postgres
    password: postgres
    driver-class-name: org.postgresql.Driver
    hikari:
      jdbc-url: "jdbc:postgresql://localhost:5432/dataflow?schema=public"

  datasource-app:
    url: "jdbc:mysql://localhost:3306/test_task"
    username: root
    password:
    driver-class-name: com.mysql.cj.jdbc.Driver

数据源配置类

@Configuration
public class CustomCloudTaskConfiguration {

    @Bean
    @ConfigurationProperties("spring.datasource-scdf")
    public DataSourceProperties customOperationsDataSourceProperties() {
        return new DataSourceProperties();
    }

    @Bean(name = "customDatasource")
    @ConfigurationProperties("spring.datasource-scdf.configuration")
    public DataSource customOperationsDataSource() {
        return customOperationsDataSourceProperties()
                .initializeDataSourceBuilder()
                .type( HikariDataSource.class )
                .build();
    }

    @Primary
    @Bean
    public DataSourceTransactionManager taskOperationsTransactionManager() {
        return new DataSourceTransactionManager( customOperationsDataSource() );
    }

}

初始的CustomTaskConfigurer实现(存在问题)

@Component
public class CustomTaskConfigurer extends DefaultTaskConfigurer {

    public CustomTaskConfigurer(@Qualifier("customDatasource") DataSource dataSource) {
        super(dataSource);
    }

}

修复方案

问题出在DefaultTaskConfigurer的构造方法调用上,初始实现没有传入TaskProperties和ApplicationContext,导致配置的表前缀无法被正确加载。修改后的CustomTaskConfigurer如下:

@Component
public class CustomTaskConfigurer extends DefaultTaskConfigurer {
    @Autowired
    public CustomTaskConfigurer(@Qualifier("springCloudDataSource") DataSource dataSource, TaskProperties taskProperties, ApplicationContext context) {
        super(dataSource, taskProperties.getTablePrefix(), context);
    }
}

额外注意事项

  • 确保任务中定义的数据库配置属性/名称与SCDF服务器执行时传递的参数完全一致,避免数据源匹配错误。

内容的提问来源于stack exchange,提问作者Jaswinder K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 15:51:03