全部产品

任务触发与执行问题

更新时间:2020-08-28 19:50:43

任务执行超时

现象

TIMEOUT 错误

原因

客户端处理超时

解决方法

  • 查看超时时间是否配置太小。
  • 查看客户端错误日志 common-error.log

自定义参数不存在

现象

报错:javax.el.PropertyNotFoundException: Cannot find property \${property_name} 。

原因

任务拓扑的判断条件中指定的自定义参数不存在。

解决方法

检查判断条件与任务拓扑配置中的自定义参数列表是否匹配,并更正。


客户端未注册到服务端

现象

  • no targets was found
  • target zone is null
  • no available target zones was found, please check if clients are available
  • no available targets was found in zone

原因

客户端没有注册到服务端。

解决方案

  1. 确认客户端是否启动;
  2. 请先确认控制台配置的应用名称和执行器名字是否与客户端代码里写的一致,可以查看 endpoint 配置是否正确;
  3. 如果客户端已经启动,则检查 logs/scheduler 目录下的 common-default.log 和 common-error.log 错误日志;
  4. 如果错误日志中都没有报错,则查看健康检查日志, 确认健康检查是否通过。

客户端未提供执行器

现象

报错:no suitable job handler for {handler_name}。

原因

任务中使用的 handler 执行器存在,但任务应用中没有找到。

解决方案

  1. 检查代码里的 handlerName 返回值和任务配置里的执行器名字是否一致;
  2. 在客户端加上 handler 实现,getName 值设置为当前 {handler_name}。

拓扑无可执行的发布版本

现象

报错:no published topology process was found。

原因

拓扑图没有发布的版本,就直接执行拓扑任务,即无可执行的发布版本。

解决方案

编辑拓扑图,发布一个版本。


服务端异常

现象

  • 整个应用的所有任务均触发失败。
  • 控制台提示失败原因:Server exception when invoke with callback. Please check the server log!

原因

该项目工程缺少 Tracer 依赖:

  1. <dependency>
  2. <groupId>com.alipay.sofa</groupId>
  3. <artifactId>tracer-enterprise-sofa-boot-starter</artifactId>
  4. </dependency>

解决方案

  • 检查工程 pom.xml 文件,是否已经添加了 Tracer 依赖。如没有,需手动添加该依赖。
  • 对于 SOFABoot 框架开发的工程,需要确认 SOFABoot 的版本是否低于 3.4.3。
    • 如低于 3.4.3 版本,需要手动添加 Tracer 依赖。
    • 而 SOFABoot 3.4.3 及其以上版本,则会自动加上 Tracer 依赖。无需再手动添加。
    • 有关 SOFABoot 的版本信息,参见 SOFABoot 版本说明

任务互斥导致执行失败

现象

  • job is exclusive
  • can not be triggered, please check the value of timeoutStrategy and isExclusive

原因

  • 互斥任务正在执行中,不允许再次触发。
  • 互斥任务已经超时且未进行重置,则不允许再次触发。

解决方案

查看调度记录:

  • 如果任务正在执行中,则等待执行完成后再次触发。
  • 如果有 触发超时 的执行记录,尝试将该任务的触发记录重置为 成功 或 失败 状态以后再次触发该任务。

任务处在禁用状态

现象

任务配置了重试策略,但是执行失败后没有重试。

原因

仅当任务处于“启用”状态时重试策略才会生效,“禁用”时执行失败不会进行重试。

解决方案

前往 控制台 > 任务配置 > 任务列表,启用任务。


任务触发时间间隔过短

现象

报错:the interval for tasks of type callback must takes more than 5 minutes

原因

对于以 Cron 表达式触发的 CALLBACK 类型的任务,两次触发的时间间隔必须大于5分钟。

解决方案

修改 Cron 表达式,使得定时任务的触发间隔时间大于5分钟,例如 1 0/5 * * ? 。有关 Cron 表达式的详细说明,参见 Cron 表达式详解


集群任务配置了拆分处理器,客户端也都在线,但触发失败

集群任务的通信方式设置成了单向 ONEWAY,导致触发不成功。