From 2725e9f3e52b008e28019a148cae4b58fc6dc69c Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Mon, 07 Jan 2019 23:33:35 +0000
Subject: [PATCH] ConcurrentModificationException on queue: synchronized added.

---
 borgbutler-core/src/main/java/de/micromata/borgbutler/jobs/JobQueue.java |   16 ++++++++++------
 1 files changed, 10 insertions(+), 6 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 fc36350..e040676 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
@@ -38,7 +38,9 @@
     }
 
     public Iterator<AbstractJob<T>> getQueueIterator() {
-        return Collections.unmodifiableList(queue).iterator();
+        synchronized (queue) {
+            return Collections.unmodifiableList(queue).iterator();
+        }
     }
 
     /**
@@ -48,11 +50,13 @@
      * @return The job if any job with the given unique job number is queued, otherwise null.
      */
     public AbstractJob<T> getQueuedJobByUniqueJobNumber(long uniqueJobNumber) {
-        Iterator<AbstractJob<T>> it = queue.iterator();
-        while (it.hasNext()) {
-            AbstractJob<T> job = it.next();
-            if (job.getUniqueJobNumber() == uniqueJobNumber) {
-                return job;
+        synchronized (queue) {
+            Iterator<AbstractJob<T>> it = queue.iterator();
+            while (it.hasNext()) {
+                AbstractJob<T> job = it.next();
+                if (job.getUniqueJobNumber() == uniqueJobNumber) {
+                    return job;
+                }
             }
         }
         return null;

--
Gitblit v1.10.0