从Spring Cloud Data Flow 1.1.2 UI或API检索作业执行时出现NullPointerException

问题描述 投票:1回答:2

当我尝试在UI“作业”选项卡(“获取数据时出错。数据流服务器正在运行吗?”)或通过REST API(500 NullPointerException)获取作业执行列表时,我发现了一个问题。

日志中的错误是

java.lang.NullPointerException: null
at org.springframework.cloud.dataflow.server.service.impl.DefaultTaskJobService.getTaskJobExecution(DefaultTaskJobService.java:231) ~[spring-cloud-dataflow-server-core-1.1.2.RELEASE.jar!/:1.1.2.RELEASE]

这似乎是由代码引起的:

taskExplorer.getTaskExecutionIdByJobExecutionId(jobExecution.getId())

看来这似乎我的一些工作没有与任务ID相关联 - 即task_task_batch表中没有条目,如果我尝试检索其中一个作业或所有作业的列表,我得到NullPointerException。

直接通过在task_task_batch表中具有关联的id直接检索作业是可以的。

调查我的一些工作任务发生的原因似乎是因为他们中的一些使用XML而不是Java Config来配置作业(我们有一些预先存在的复杂作业,我们正在从XD迁移到Spring Cloud Data Flow和保持XML是最初这样做的最快方式)。

否则这些作业运行正常,并将作业/步骤执行记录到DB。

使用XML时,似乎taskBatchExecutionListener没有自动添加到作业中,因此任务/批处理关联不会被注册。

这个代码在TaskBatchExecutionListenerBeanPostProcessor中,可能是因为在使用XML配置时,作业bean的类型为JobParserJobFactoryBean而不是AbstractJob

如果我手动添加监听器,即

<listeners>
   <listener ref="taskBatchExecutionListener"/>
</listeners>

在作业xml中,问题得到解决。

我有几个问题:

1)这是Spring Cloud Task中的一个错误 - 即它只是没有正确处理XML配置,如果是这样,我可以为此提出一个问题。

2)Spring Cloud Dataflow应该更好地处理这个吗?看起来表现糟糕的任务可以有效地破坏数据并停止检索包含“好”工作的列表。

spring-cloud-dataflow spring-cloud-task
2个回答
0
投票

我有同样的问题,在我的情况下,通过将@EnableTask添加到作业配置来解决问题


0
投票

我记得也得到了这个错误,但在我的情况下,我尝试通过spring cloud dataflow服务器API删除任务执行(请参阅https://docs.spring.io/spring-cloud-dataflow/docs/current-SNAPSHOT/reference/htmlsingle/#api-guide-resources-task-executions-delete)。

当我注意到它实际上是一个NO-OP删除(它没有做任何事情并且由开发人员https://github.com/spring-cloud/spring-cloud-dataflow/issues/1844确认)时,我尝试手动删除数据库中的记录,我错过了一些记录。

有一些FK依赖,我的清理不彻底。一旦我重新开始(创建一个新的数据库架构和所有),那么问题就消失了。

© www.soinside.com 2019 - 2024. All rights reserved.