From 67dd1243073e766178dd70dd2f45aa5bc77ec529 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Sat, 05 Jan 2019 22:03:29 +0000
Subject: [PATCH] Job monitor: Cancellation of jobs...
---
borgbutler-core/src/main/java/de/micromata/borgbutler/BorgQueueExecutor.java | 28 ++++++++++++++++++++++++++--
1 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgQueueExecutor.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgQueueExecutor.java
index e4dc1a8..5e440fe 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgQueueExecutor.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/BorgQueueExecutor.java
@@ -28,11 +28,33 @@
*/
public List<String> getRepos() {
List<String> list = new ArrayList<>();
- list.addAll(queueMap.keySet());
+ synchronized (queueMap) {
+ list.addAll(queueMap.keySet());
+ }
Collections.sort(list);
return list;
}
+ public void cancelJob(long uniqueJobNumber) {
+ AbstractJob<?> job = getQueuedJobByUniqueJobNumber(uniqueJobNumber);
+ if (job == null) {
+ log.info("Can't cancel job #" + uniqueJobNumber + ". Not found as queued job (may-be already cancelled or finished). Nothing to do.");
+ return;
+ }
+ job.cancel();
+ }
+
+ private AbstractJob<?> getQueuedJobByUniqueJobNumber(long uniqueJobNumber) {
+ Iterator<JobQueue<String>> it = queueMap.values().iterator();
+ while (it.hasNext()) {
+ AbstractJob<?> job = it.next().getQueuedJobByUniqueJobNumber(uniqueJobNumber);
+ if (job != null) {
+ return job;
+ }
+ }
+ return null;
+ }
+
/**
* For displaying purposes.
*
@@ -56,7 +78,9 @@
}
private JobQueue<String> getQueue(String repo) {
- return queueMap.get(getQueueName(repo));
+ synchronized (queueMap) {
+ return queueMap.get(getQueueName(repo));
+ }
}
private JobQueue<String> ensureAndGetQueue(String repo) {
--
Gitblit v1.10.0