Skip to content

Commit f9172b3

Browse files
committed
added timeout
1 parent da671ab commit f9172b3

File tree

7 files changed

+21
-13
lines changed

7 files changed

+21
-13
lines changed

core/src/main/java/org/sterl/spring/persistent_tasks/PersistentTaskService.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,9 @@ public List<Future<TriggerKey>> executeTriggers() {
142142
* Triggers the execution of all pending triggers and wait for the result.
143143
*/
144144
@SneakyThrows
145-
public List<TriggerKey> executeTriggersAndWait() {
145+
public List<TriggerKey> executeTriggersAndWait(Duration maxWaitTime) {
146146
final var result = new ArrayList<TriggerKey>();
147+
final var timeOut = System.currentTimeMillis() + maxWaitTime.toMillis();
147148

148149
List<Future<TriggerKey>> triggers;
149150
var isSomethingRunning = false;
@@ -162,6 +163,10 @@ public List<TriggerKey> executeTriggersAndWait() {
162163
if (isSomethingRunning) {
163164
Thread.sleep(Duration.ofMillis(100));
164165
}
166+
167+
if (System.currentTimeMillis() > timeOut) {
168+
throw new RuntimeException("Timeout waiting for triggers after " + maxWaitTime);
169+
}
165170

166171
} while (!triggers.isEmpty() || isSomethingRunning);
167172

core/src/test/java/org/sterl/spring/persistent_tasks/TaskSchedulerServiceTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import static org.assertj.core.api.Assertions.assertThat;
44

5+
import java.time.Duration;
56
import java.util.ArrayList;
67
import java.util.UUID;
78
import java.util.concurrent.Callable;
@@ -40,8 +41,8 @@ public RetryStrategy retryStrategy() {
4041
var runTrigger = triggerService.queue(task.newTrigger().state("hallo").build());
4142

4243
// WHEN
43-
persistentTaskService.executeTriggersAndWait();
44-
persistentTaskService.executeTriggersAndWait();
44+
persistentTaskService.executeTriggersAndWait(Duration.ofSeconds(2));
45+
persistentTaskService.executeTriggersAndWait(Duration.ofSeconds(1));
4546

4647
// THEN
4748
assertThat(asserts.getCount("hallo")).isEqualTo(4);
@@ -67,7 +68,7 @@ void testLockTriggerInSchedulers() throws Exception {
6768
lockInvocations.add(() -> runNextTrigger());
6869
}
6970

70-
persistentTaskService.executeTriggersAndWait();
71+
persistentTaskService.executeTriggersAndWait(Duration.ofSeconds(2));
7172

7273
// THEN
7374
for (int i = 1; i <= 100; ++i) {

core/src/test/java/org/sterl/spring/persistent_tasks/history/HistoryServiceTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
import static org.assertj.core.api.Assertions.assertThat;
44

5+
import java.time.Duration;
56
import java.time.OffsetDateTime;
67
import java.util.Optional;
78
import java.util.concurrent.TimeoutException;
89

9-
import org.junit.jupiter.api.RepeatedTest;
1010
import org.junit.jupiter.api.Test;
1111
import org.springframework.beans.factory.annotation.Autowired;
1212
import org.springframework.data.domain.PageRequest;
@@ -35,7 +35,7 @@ void testReQueueTrigger() {
3535
// THEN
3636
assertThat(t).isPresent();
3737
// AND
38-
persistentTaskService.executeTriggersAndWait();
38+
persistentTaskService.executeTriggersAndWait(Duration.ofSeconds(2));
3939
asserts.assertValue(Task3.NAME + "::Hallo");
4040
// AND
4141
assertThat(subject.countTriggers(trigger.getKey())).isEqualTo(2);
@@ -46,7 +46,7 @@ void testTriggerHistory() throws TimeoutException, InterruptedException {
4646
// GIVEN
4747
final var trigger = Task3.ID.newUniqueTrigger("Hallo");
4848
triggerService.queue(trigger);
49-
persistentTaskService.executeTriggersAndWait();
49+
persistentTaskService.executeTriggersAndWait(Duration.ofSeconds(2));
5050
// WHEN
5151
var triggers = subject.findAllDetailsForKey(trigger.key(), PageRequest.of(0, 100)).getContent();
5252

core/src/test/java/org/sterl/spring/persistent_tasks/scheduler/SchedulerServiceTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ void testQueuedInFuture() throws TimeoutException, InterruptedException {
115115
subject.runOrQueue(triggerRequest);
116116

117117
// WHEN
118-
persistentTaskService.executeTriggersAndWait();
118+
persistentTaskService.executeTriggersAndWait(Duration.ofSeconds(2));
119119
awaitRunningTasks();
120120

121121
// THEN
@@ -132,7 +132,7 @@ void runSimpleTaskMultipleTimesTest() throws Exception {
132132
}
133133

134134
// WHEN
135-
persistentTaskService.executeTriggersAndWait();
135+
persistentTaskService.executeTriggersAndWait(Duration.ofSeconds(2));
136136

137137
// THEN
138138
for (int i = 1; i < 21; ++i) {

core/src/test/java/org/sterl/spring/persistent_tasks/scheduler/SchedulerServiceTransactionTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import static org.assertj.core.api.Assertions.assertThat;
44

5+
import java.time.Duration;
56
import java.util.concurrent.ExecutionException;
67
import java.util.concurrent.atomic.AtomicBoolean;
78

@@ -222,7 +223,7 @@ void testRollbackAndRetry() throws Exception {
222223

223224
// WHEN
224225
sendError.set(false);
225-
var executed = persistentTaskService.executeTriggersAndWait();
226+
var executed = persistentTaskService.executeTriggersAndWait(Duration.ofSeconds(2));
226227

227228
// THEN
228229
assertThat(executed).hasSize(1);

core/src/test/java/org/sterl/spring/persistent_tasks/trigger/TriggerServiceTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ void testLockTrigger() throws Exception {
338338
}
339339

340340
executor.invokeAll(lockInvocations);
341-
persistentTaskService.executeTriggersAndWait();
341+
persistentTaskService.executeTriggersAndWait(Duration.ofSeconds(2));
342342

343343
// THEN
344344
for (int i = 1; i <= 100; ++i) {
@@ -359,7 +359,7 @@ void testQueuedInFuture() {
359359
subject.queue(triggerRequest);
360360

361361
// WHEN
362-
persistentTaskService.executeTriggersAndWait();
362+
persistentTaskService.executeTriggersAndWait(Duration.ofSeconds(2));
363363

364364
// THEN
365365
asserts.assertMissing(Task3.NAME + "::Hallo");

core/src/test/java/org/sterl/spring/persistent_tasks/trigger/api/TriggerResourceTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,8 @@ void testUpdateRunAt() {
174174
HttpMethod.POST, new HttpEntity<>(OffsetDateTime.now()), Trigger.class);
175175

176176
// THEN
177-
persistentTaskService.executeTriggersAndWait();
177+
persistentTaskService.executeTriggersAndWait(Duration.ofSeconds(2));
178+
178179
asserts.assertValue(Task3.NAME + "::Hallo");
179180
asserts.assertMissing(Task3.NAME + "::Hallo2");
180181
assertThat(triggerService.countTriggers(TriggerStatus.WAITING)).isOne();

0 commit comments

Comments
 (0)