【问题标题】:Spring Cloud Task JobAlreadyRunning ExceptionSpring Cloud 任务 JobAlreadyRunning 异常
【发布时间】:2019-12-27 18:51:35
【问题描述】:

一个 Spring Cloud 组合批处理任务 Job(jobid=1) 在没有完成的情况下执行并停止。 如果我们尝试从数据流 shell 再次运行任务,则会抛出 JobExecutionAlreadyRunningException。即使为下一个任务执行创建了新的作业 id 2。 即使先前的任务执行未完成/停止,是否有任何解决方案可用于运行下一个任务

在 spring-cloud-dataflow-server-local-1.7.4 中使用 MySql 进行了尝试。 TASK_EXECUTION 表 EXIT_CODE,EXIT_MESSAGE 在失败或任务异常停止时不会更新。

java.lang.IllegalStateException:无法执行 CommandLineRunner 在 org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:795) [spring-boot-2.0.6.RELEASE.jar!/:2.0.6.RELEASE] 在 org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:776) [spring-boot-2.0.6.RELEASE.jar!/:2.0.6.RELEASE] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-2.0.6.RELEASE.jar!/:2.0.6.RELEASE] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1242) [spring-boot-2.0.6.RELEASE.jar!/:2.0.6.RELEASE] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1230) [spring-boot-2.0.6.RELEASE.jar!/:2.0.6.RELEASE] 在 org.springframework.cloud.task.app.composedtaskrunner.ComposedtaskrunnerTaskApplication.main(ComposedtaskrunnerTaskApplication.java:29) [classes!/:2.0.2.RELEASE] 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_144] 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_144] 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_144] 在 java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_144] 在 org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) [composedtaskrunner-task-2.0.2.RELEASE.jar:2.0.2.RELEASE] 在 org.springframework.boot.loader.Launcher.launch(Launcher.java:87) [composedtaskrunner-task-2.0.2.RELEASE.jar:2.0.2.RELEASE] 在 org.springframework.boot.loader.Launcher.launch(Launcher.java:50) [composedtaskrunner-task-2.0.2.RELEASE.jar:2.0.2.RELEASE] 在 org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51) [composedtaskrunner-task-2.0.2.RELEASE.jar:2.0.2.RELEASE] 原因:org.springframework.batch.core.repository.JobExecutionAlreadyRunningException:该作业的作业执行已在运行:JobExecution:id=1,version=1,startTime=2019-08-22 07:35:10.0,endTime= null, lastUpdated=2019-08-22 07:35:10.0, status=STARTED, exitStatus=exitCode=UNKNOWN;exitDescription=, job=[JobInstance: id=1, version=0, Job=[customBatchTask1]], jobParameters= [{-spring.cloud.task.executionid=1}] 在 org.springframework.batch.core.launch.support.SimpleJobLauncher.run(SimpleJobLauncher.java:110) ~[spring-batch-core-4.0.1.RELEASE.jar!/:4.0.1.RELEASE] 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_144] 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_144] 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_144] 在 java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_144] 在 org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343) ~[spring-aop-5.0.10.RELEASE.jar!/:5.0.10.RELEASE] 在 org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:197) ~[spring-aop-5.0.10.RELEASE.jar!/:5.0.10.RELEASE] 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.0.10.RELEASE.jar!/:5.0.10.RELEASE] 在 org.springframework.batch.core.configuration.annotation.SimpleBatchConfiguration$PassthruAdvice.invoke(SimpleBatchConfiguration.java:127) ~[spring-batch-core-4.0.1.RELEASE.jar!/:4.0.1.RELEASE] 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185) ~[spring-aop-5.0.10.RELEASE.jar!/:5.0.10.RELEASE] 在 org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) ~[spring-aop-5.0.10.RELEASE.jar!/:5.0.10.RELEASE] 在 com.sun.proxy.$Proxy85.run(Unknown Source) ~[na:na] 在 org.springframework.boot.autoconfigure.batch.JobLauncherCommandLineRunner.execute(JobLauncherCommandLineRunner.java:163) ~[spring-boot-autoconfigure-2.0.6.RELEASE.jar!/:2.0.6.RELEASE] 在 org.springframework.boot.autoconfigure.batch.JobLauncherCommandLineRunner.executeLocalJobs(JobLauncherCommandLineRunner.java:179) ~[spring-boot-autoconfigure-2.0.6.RELEASE.jar!/:2.0.6.RELEASE] 在 org.springframework.boot.autoconfigure.batch.JobLauncherCommandLineRunner.launchJobFromProperties(JobLauncherCommandLineRunner.java:134) ~[spring-boot-autoconfigure-2.0.6.RELEASE.jar!/:2.0.6.RELEASE] 在 org.springframework.boot.autoconfigure.batch.JobLauncherCommandLineRunner.run(JobLauncherCommandLineRunner.java:128) ~[spring-boot-autoconfigure-2.0.6.RELEASE.jar!/:2.0.6.RELEASE] 在 org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:792) [spring-boot-2.0.6.RELEASE.jar!/:2.0.6.RELEASE] ...省略了13个常用框架

【问题讨论】:

    标签: spring-boot spring-batch spring-cloud-task


    【解决方案1】:

    传递给作业的参数是什么???

    确保您始终传递时间戳参数,即使您不使用它。

    原因是每次运行时,作业总是需要唯一的参数集。似乎您的论点在第二次运行时相同并抛出此异常。

    一旦您传递了时间戳,它将始终具有唯一值,并且作业将得到处理。

    希望这会有所帮助。谢谢。

    【讨论】:

      猜你喜欢
      • 2016-07-25
      • 2019-02-15
      • 2019-01-20
      • 2020-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多