From 97e1cce284ff09f3d208fbc776fc9692af9bde0a Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Sat, 05 Jan 2019 17:15:44 +0000
Subject: [PATCH] Some required synchronizations...
---
borgbutler-core/src/main/java/de/micromata/borgbutler/jobs/JobQueue.java | 40 +++++++++++++++++++---------------------
1 files changed, 19 insertions(+), 21 deletions(-)
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/jobs/JobQueue.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/jobs/JobQueue.java
index cf28884..7ce762e 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/jobs/JobQueue.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/jobs/JobQueue.java
@@ -1,7 +1,6 @@
package de.micromata.borgbutler.jobs;
import lombok.Getter;
-import org.apache.commons.collections4.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -23,7 +22,9 @@
}
public List<AbstractJob<T>> getDoneJobs() {
- return Collections.unmodifiableList(doneJobs);
+ synchronized (doneJobs) {
+ return Collections.unmodifiableList(doneJobs);
+ }
}
/**
@@ -41,31 +42,22 @@
}
}
queue.add(job.setStatus(AbstractJob.Status.QUEUED));
- job.setFuture(executorService.submit(new CallableTask(job)));
- return job;
}
+ job.setFuture(executorService.submit(new CallableTask(job)));
+ return job;
}
public AbstractJob getQueuedJob(Object id) {
- for (AbstractJob job : queue) {
- if (Objects.equals(job.getId(), id)) {
- return job;
+ synchronized (queue) {
+ for (AbstractJob job : queue) {
+ if (Objects.equals(job.getId(), id)) {
+ return job;
+ }
}
}
return null;
}
- void waitForQueue(int seconds) {
- int counter = seconds / 10;
- while (CollectionUtils.isNotEmpty(queue) && counter > 0) {
- try {
- Thread.sleep(100);
- } catch (InterruptedException ex) {
- log.error(ex.getMessage(), ex);
- }
- }
- }
-
private void organizeQueue() {
synchronized (queue) {
if (queue.isEmpty()) {
@@ -76,13 +68,19 @@
AbstractJob<T> job = it.next();
if (job.isFinished()) {
it.remove();
- doneJobs.add(0, job);
+ synchronized (doneJobs) {
+ doneJobs.add(0, job);
+ }
}
- while (doneJobs.size() > MAX_DONE_JOBS_SIZE) {
- doneJobs.remove(doneJobs.size() - 1);
+ synchronized (doneJobs) {
+ while (doneJobs.size() > MAX_DONE_JOBS_SIZE) {
+ doneJobs.remove(doneJobs.size() - 1);
+ }
}
}
}
+
+
}
private class CallableTask implements Callable<JobResult<T>> {
--
Gitblit v1.10.0