From 9e49542cbb5180ef95645926bc7f64b3d5684ad0 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Fri, 28 Dec 2018 21:52:23 +0000
Subject: [PATCH] Job queueing...

---
 borgbutler-core/src/test/java/de/micromata/borgbutler/jobs/TestJob.java |   24 ++++++++++++++++++++++--
 1 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/borgbutler-core/src/test/java/de/micromata/borgbutler/jobs/TestJob.java b/borgbutler-core/src/test/java/de/micromata/borgbutler/jobs/TestJob.java
index fe79067..8c2a163 100644
--- a/borgbutler-core/src/test/java/de/micromata/borgbutler/jobs/TestJob.java
+++ b/borgbutler-core/src/test/java/de/micromata/borgbutler/jobs/TestJob.java
@@ -1,5 +1,6 @@
 package de.micromata.borgbutler.jobs;
 
+import lombok.Getter;
 import org.apache.commons.exec.*;
 import org.apache.commons.io.output.ByteArrayOutputStream;
 import org.slf4j.Logger;
@@ -14,6 +15,9 @@
     private int time;
     private File counterScript;
     private int failOn = -1;
+    private ExecuteWatchdog watchdog;
+    @Getter
+    private boolean executeStarted;
 
     TestJob(int time, File counterScript) {
         this(time, -1, counterScript);
@@ -31,6 +35,17 @@
     }
 
     @Override
+    protected void cancelRunningProcess() {
+        log.info("CancelRunningProcess: " + watchdog + ", " + getStatus());
+        if (watchdog != null) {
+            log.info("Cancelling job: " + getId());
+            watchdog.destroyProcess();
+            watchdog = null;
+            setCancelled();
+        }
+    }
+
+    @Override
     public String execute() {
         ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
         ByteArrayOutputStream errorOutputStream = new ByteArrayOutputStream();
@@ -38,7 +53,7 @@
         cmdLine.addArgument(String.valueOf(this.time));
         cmdLine.addArgument(String.valueOf(this.failOn));
         DefaultExecutor executor = new DefaultExecutor();
-        ExecuteWatchdog watchdog = new ExecuteWatchdog(ExecuteWatchdog.INFINITE_TIMEOUT);
+        watchdog = new ExecuteWatchdog(ExecuteWatchdog.INFINITE_TIMEOUT);
         executor.setWatchdog(watchdog);
         PumpStreamHandler streamHandler = new PumpStreamHandler(new LogOutputStream() {
             @Override
@@ -64,12 +79,17 @@
             }
         });
         executor.setStreamHandler(streamHandler);
+        if (isCancelledRequested()) {
+            setCancelled();
+            return null;
+        }
         log.info("Executing '" + counterScript.getAbsolutePath() + " " + this.time + "'...");
+        executeStarted = true;
         try {
             executor.execute(cmdLine);
         } catch (Exception ex) {
             failed();
-            if (failOn < 0) {
+            if (failOn < 0 && getStatus() != Status.CANCELLED) {
                 log.error("Error while executing script: " + ex.getMessage(), ex);
             }
         }

--
Gitblit v1.10.0