mirror of https://github.com/apache/activemq.git
Ensure proper repeat counts are scheduled.
(cherry picked from commit 386210fafe
)
This commit is contained in:
parent
23e9ecaec1
commit
4782feb6a1
|
@ -273,7 +273,9 @@ public class InMemoryJobScheduler implements JobScheduler {
|
||||||
private void doReschedule(InMemoryJob job, long nextExecutionTime) {
|
private void doReschedule(InMemoryJob job, long nextExecutionTime) {
|
||||||
job.setNextTime(nextExecutionTime);
|
job.setNextTime(nextExecutionTime);
|
||||||
job.incrementExecutionCount();
|
job.incrementExecutionCount();
|
||||||
|
if (!job.isCron()) {
|
||||||
job.decrementRepeatCount();
|
job.decrementRepeatCount();
|
||||||
|
}
|
||||||
|
|
||||||
LOG.trace("JobScheduler rescheduling job[{}] to fire at: {}", job.getJobId(), JobSupport.getDateTime(nextExecutionTime));
|
LOG.trace("JobScheduler rescheduling job[{}] to fire at: {}", job.getJobId(), JobSupport.getDateTime(nextExecutionTime));
|
||||||
|
|
||||||
|
@ -291,7 +293,6 @@ public class InMemoryJobScheduler implements JobScheduler {
|
||||||
} finally {
|
} finally {
|
||||||
lock.writeLock().unlock();
|
lock.writeLock().unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void doRemoveJob(String jobId) throws IOException {
|
private void doRemoveJob(String jobId) throws IOException {
|
||||||
|
|
|
@ -38,9 +38,13 @@ import org.apache.activemq.ScheduledMessage;
|
||||||
import org.apache.activemq.util.ProducerThread;
|
import org.apache.activemq.util.ProducerThread;
|
||||||
import org.apache.activemq.util.Wait;
|
import org.apache.activemq.util.Wait;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
public class JmsSchedulerTest extends JobSchedulerTestSupport {
|
public class JmsSchedulerTest extends JobSchedulerTestSupport {
|
||||||
|
|
||||||
|
private static final Logger LOG = LoggerFactory.getLogger(JmsSchedulerTest.class);
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCron() throws Exception {
|
public void testCron() throws Exception {
|
||||||
final int COUNT = 10;
|
final int COUNT = 10;
|
||||||
|
@ -55,8 +59,9 @@ public class JmsSchedulerTest extends JobSchedulerTestSupport {
|
||||||
consumer.setMessageListener(new MessageListener() {
|
consumer.setMessageListener(new MessageListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onMessage(Message message) {
|
public void onMessage(Message message) {
|
||||||
latch.countDown();
|
|
||||||
count.incrementAndGet();
|
count.incrementAndGet();
|
||||||
|
latch.countDown();
|
||||||
|
LOG.info("Received scheduled message, waiting for {} more", latch.getCount());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -167,8 +172,9 @@ public class JmsSchedulerTest extends JobSchedulerTestSupport {
|
||||||
consumer.setMessageListener(new MessageListener() {
|
consumer.setMessageListener(new MessageListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onMessage(Message message) {
|
public void onMessage(Message message) {
|
||||||
latch.countDown();
|
|
||||||
count.incrementAndGet();
|
count.incrementAndGet();
|
||||||
|
latch.countDown();
|
||||||
|
LOG.info("Received scheduled message, waiting for {} more", latch.getCount());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue