diff --git a/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/scheduler/JobSchedulerImpl.java b/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/scheduler/JobSchedulerImpl.java index 415a292648..455801a934 100644 --- a/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/scheduler/JobSchedulerImpl.java +++ b/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/scheduler/JobSchedulerImpl.java @@ -435,17 +435,16 @@ class JobSchedulerImpl extends ServiceSupport implements Runnable, JobScheduler for (Iterator>> i = this.index.iterator(tx); i.hasNext();) { Map.Entry> entry = i.next(); keys.add(entry.getKey()); - List values = entry.getValue(); + } + + for (Long l : keys) { + List values = this.index.remove(tx, l); if (values != null) { for (JobLocation jl : values) { this.store.decrementJournalCount(tx, jl.getLocation()); } } } - - for (Long l : keys) { - this.index.remove(tx, l); - } } synchronized void destroy(Transaction tx, long start, long finish) throws IOException { @@ -454,19 +453,18 @@ class JobSchedulerImpl extends ServiceSupport implements Runnable, JobScheduler Map.Entry> entry = i.next(); if (entry.getKey().longValue() <= finish) { keys.add(entry.getKey()); - List values = entry.getValue(); - if (values != null) { - for (JobLocation jl : values) { - this.store.decrementJournalCount(tx, jl.getLocation()); - } - } } else { break; } } for (Long l : keys) { - this.index.remove(tx, l); + List values = this.index.remove(tx, l); + if (values != null) { + for (JobLocation jl : values) { + this.store.decrementJournalCount(tx, jl.getLocation()); + } + } } } diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/broker/scheduler/JobSchedulerTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/broker/scheduler/JobSchedulerTest.java index 65edb08da6..512697051c 100644 --- a/activemq-unit-tests/src/test/java/org/apache/activemq/broker/scheduler/JobSchedulerTest.java +++ b/activemq-unit-tests/src/test/java/org/apache/activemq/broker/scheduler/JobSchedulerTest.java @@ -252,6 +252,7 @@ public class JobSchedulerTest { @After public void tearDown() throws Exception { + scheduler.stopDispatching(); store.stop(); } }