From 9005aef9bddeac58e9e872a246f32f44317863c1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1s=C3=A1ry=20D=C3=A1niel?= Date: Fri, 24 Apr 2020 15:17:10 +0000 Subject: [PATCH] git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31799 --- server/user.jobengine.executors/config/config.xml | 1 + .../jobengine/server/steps/CancelableStep.java | 10 ++++------ .../user.jobengine.osgi.server/pages/joblist.zul | 3 ++- .../src/user/jobengine/server/IJobRuntime.java | 6 +++++- .../src/user/jobengine/server/JobEngine.java | 8 ++++++-- .../src/user/jobengine/server/JobRuntime.java | 14 ++++++++++++-- .../server/scheduler/SchedulerService.java | 6 +++++- .../src/user/jobengine/server/steps/JobStep.java | 2 +- .../src/user/jobengine/zk/model/JobListModel.java | 10 ++++++++++ .../test/user/jobengine/server/JobRuntimeTest.java | 14 +++++++------- 10 files changed, 53 insertions(+), 21 deletions(-) diff --git a/server/user.jobengine.executors/config/config.xml b/server/user.jobengine.executors/config/config.xml index a5ebba02..892d9f3c 100644 --- a/server/user.jobengine.executors/config/config.xml +++ b/server/user.jobengine.executors/config/config.xml @@ -3,6 +3,7 @@ + diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/CancelableStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/CancelableStep.java index 3b5f9ec1..334efe75 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/CancelableStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/CancelableStep.java @@ -1,20 +1,18 @@ package user.jobengine.server.steps; import user.jobengine.server.IJobRuntime; -import user.jobengine.server.steps.JobStep; -import user.jobengine.server.steps.StepEntry; public class CancelableStep extends JobStep { int count = 10; - + @StepEntry public Object[] execute(IJobRuntime jobRuntime) { try { for (int i = 0; i < count; i++) { - if (!canContinue()) + if (jobRuntime.isWaitingCancel() || jobRuntime.isWaitingSuspend()) break; - Thread.sleep(100); - jobRuntime.incrementProgress((i + 1)*count); + Thread.sleep(1000); + jobRuntime.incrementProgress((i + 1) * count); } } catch (Exception e) { e.printStackTrace(); diff --git a/server/user.jobengine.osgi.server/pages/joblist.zul b/server/user.jobengine.osgi.server/pages/joblist.zul index f1b1b7ef..1640677c 100644 --- a/server/user.jobengine.osgi.server/pages/joblist.zul +++ b/server/user.jobengine.osgi.server/pages/joblist.zul @@ -11,12 +11,13 @@ -
+
+ diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobRuntime.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobRuntime.java index 2f03f88c..5f2f6c93 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobRuntime.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobRuntime.java @@ -66,7 +66,11 @@ public interface IJobRuntime extends IJob { boolean isService(); - boolean isWaiting(); + boolean isWaitingCancel(); + + boolean isWaitingExecutor(); + + boolean isWaitingSuspend(); Object popFromStack(); diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngine.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngine.java index de6b25d9..f10f73c6 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngine.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngine.java @@ -410,8 +410,9 @@ public class JobEngine implements IJobEngine { @Override public IJobRuntime getJobById(long jobId) { - if (!submittedJobs.containsKey(jobId)) - throw new NullPointerException("job"); + if (!submittedJobs.containsKey(jobId)) { + logger.warn("Job not exists anymore {}. Possible canceled already.", jobId); + } return submittedJobs.get(jobId); } @@ -615,6 +616,9 @@ public class JobEngine implements IJobEngine { public void processJobStepCompletedMessage(IJobMessage message) { // TODO cancel nem megy, valszeg itt van gubasz IJobRuntime jobRuntime = getJobById(message.getJobId()); + if (jobRuntime == null) { + //a cancel hamarabb megjott? + } JobStepCompletedMessage m = (JobStepCompletedMessage) message; putOutputsToStack(jobRuntime, m.getOutputs()); statusMachine.processAction(JobAction.DONE, jobRuntime); diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/JobRuntime.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/JobRuntime.java index 0643b855..ad4ff47d 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/JobRuntime.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/JobRuntime.java @@ -436,8 +436,18 @@ public class JobRuntime extends Job implements IJobRuntime { } @Override - public boolean isWaiting() { - return ((getStatus().getValue() & 0x0100) == 0x0100); + public boolean isWaitingExecutor() { + return getStatus() == JobStatus.WAIT_EXECUTOR; + } + + @Override + public boolean isWaitingCancel() { + return getStatus() == JobStatus.WAIT_CANCEL; + } + + @Override + public boolean isWaitingSuspend() { + return getStatus() == JobStatus.WAIT_SUSPEND; } @Override diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/scheduler/SchedulerService.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/scheduler/SchedulerService.java index 5caa0c5b..180db6af 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/scheduler/SchedulerService.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/scheduler/SchedulerService.java @@ -67,7 +67,11 @@ public class SchedulerService { String name = jobJSON.getString("name"); String template = jobJSON.getString("template"); sj.setJobId(String.format("%s.%s", template, name)); - sj.setJobName(name); + if (StringUtils.isEmpty(name)) + sj.setJobName(template); + else + sj.setJobName(name); + sj.setTemplateName(template); sj.setCronExpressions(NoSQLUtils.asString(jobJSON, "cronexpression")); sj.setExecuteOnStartup(NoSQLUtils.asBool(jobJSON, "executeimmediate")); diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/steps/JobStep.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/steps/JobStep.java index bfc81630..e15a63bf 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/steps/JobStep.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/steps/JobStep.java @@ -38,7 +38,7 @@ public class JobStep implements IJobStep { @Override public boolean canContinue() { - return !jobRuntime.isWaiting(); + return !jobRuntime.isWaitingExecutor(); } protected T check(T value, String name) { diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/JobListModel.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/JobListModel.java index e13ca2f6..39e0b629 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/JobListModel.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/JobListModel.java @@ -28,6 +28,7 @@ import user.jobengine.server.IJobEngine; import user.jobengine.server.IJobRuntime; import user.jobengine.server.JobChangedEvent; import user.jobengine.server.JobEngine; +import user.jobengine.server.messages.CancelRequest; import user.jobengine.zk.util.SessionUtil; public class JobListModel extends AsyncBaseModel implements IJobChangedListener { @@ -41,6 +42,15 @@ public class JobListModel extends AsyncBaseModel implements IJobChangedListener private boolean scheduledExecutionDisabled; private Collection selectedJobs; + @Command + public void cancelJobs() { + if (this.jobList.getSelection() != null) { + for (IJobRuntime job : this.jobList.getSelection()) { + jobEngine.sendMessage(new CancelRequest(job.getId())); + } + } + } + @Command public void changeJobsPriority() { if (this.jobList.getSelection() != null) { diff --git a/server/user.jobengine.osgi.server/test/user/jobengine/server/JobRuntimeTest.java b/server/user.jobengine.osgi.server/test/user/jobengine/server/JobRuntimeTest.java index 47cf236a..b0de9df7 100644 --- a/server/user.jobengine.osgi.server/test/user/jobengine/server/JobRuntimeTest.java +++ b/server/user.jobengine.osgi.server/test/user/jobengine/server/JobRuntimeTest.java @@ -213,31 +213,31 @@ public class JobRuntimeTest { // Fixture sut.setStatus(JobStatus.RUNABLE); // Exercise, Verify - assertFalse(sut.isWaiting()); + assertFalse(sut.isWaitingExecutor()); // Fixture sut.setStatus(JobStatus.SUSPENDED); // Exercise, Verify - assertFalse(sut.isWaiting()); + assertFalse(sut.isWaitingExecutor()); // Fixture sut.setStatus(JobStatus.EXECUTING); // Exercise, Verify - assertFalse(sut.isWaiting()); + assertFalse(sut.isWaitingExecutor()); // Fixture sut.setStatus(JobStatus.FINISHED); // Exercise, Verify - assertFalse(sut.isWaiting()); + assertFalse(sut.isWaitingExecutor()); // Fixture sut.setStatus(JobStatus.WAIT_EXECUTOR); // Exercise, Verify - assertTrue(sut.isWaiting()); + assertTrue(sut.isWaitingExecutor()); // Fixture sut.setStatus(JobStatus.WAIT_SUSPEND); // Exercise, Verify - assertTrue(sut.isWaiting()); + assertTrue(sut.isWaitingExecutor()); // Fixture sut.setStatus(JobStatus.WAIT_USERMESSAGE); // Exercise, Verify - assertTrue(sut.isWaiting()); + assertTrue(sut.isWaitingExecutor()); } @Test(expected = IllegalStateException.class) -- 2.54.0