diff --git a/engine/src/main/java/org/archive/crawler/frontier/WorkQueueFrontier.java b/engine/src/main/java/org/archive/crawler/frontier/WorkQueueFrontier.java index 881e87c6..955d3fce 100644 --- a/engine/src/main/java/org/archive/crawler/frontier/WorkQueueFrontier.java +++ b/engine/src/main/java/org/archive/crawler/frontier/WorkQueueFrontier.java @@ -764,32 +764,33 @@ implements Closeable, Queue queueOfWorkQueueKeys = entry.getValue(); while (true) { + String workQueueKey; synchronized (getInactiveQueuesByPrecedence()) { - String workQueueKey = queueOfWorkQueueKeys.poll(); + workQueueKey = queueOfWorkQueueKeys.poll(); if (workQueueKey == null) { break; } - - WorkQueue candidateQ = (WorkQueue) this.allQueues.get(workQueueKey); - if (candidateQ.getPrecedence() > expectedPrecedence) { - // queue demoted since placed; re-deactivate - deactivateQueue(candidateQ); - candidateQ.makeDirty(); - continue; - } - updateHighestWaiting(expectedPrecedence); - try { - readyClassQueues.put(workQueueKey); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - - return true; } + + WorkQueue candidateQ = (WorkQueue) this.allQueues.get(workQueueKey); + if (candidateQ.getPrecedence() > expectedPrecedence) { + // queue demoted since placed; re-deactivate + deactivateQueue(candidateQ); + candidateQ.makeDirty(); + continue; + } + + try { + readyClassQueues.put(workQueueKey); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + + return true; } } - + return false; }