thuri commented on code in PR #8785:
URL: https://github.com/apache/camel/pull/8785#discussion_r1033935822
##########
core/camel-support/src/main/java/org/apache/camel/support/task/BackgroundTask.java:
##########
@@ -85,78 +85,58 @@ public BackgroundTask build() {
this.name = name;
}
- private <T> void runTaskWrapper(CountDownLatch latch, Predicate<T>
predicate, T payload) {
+ private void runTaskWrapper(CountDownLatch latch, BooleanSupplier
supplier, ExecutionResult result) {
LOG.trace("Current latch value: {}", latch.getCount());
-
if (latch.getCount() == 0) {
return;
}
if (!budget.next()) {
LOG.warn("The task {} does not have more budget to continue
running", name);
-
- return;
- }
-
- if (predicate.test(payload)) {
+ result.completed = false;
latch.countDown();
- LOG.trace("Task {} has succeeded and the current task won't be
schedulable anymore: {}", name, latch.getCount());
- }
- }
-
- private void runTaskWrapper(CountDownLatch latch, BooleanSupplier
supplier) {
- LOG.trace("Current latch value: {}", latch.getCount());
- if (latch.getCount() == 0) {
- return;
- }
-
- if (!budget.next()) {
- LOG.warn("The task {} does not have more budget to continue
running", name);
-
return;
}
if (supplier.getAsBoolean()) {
+ result.completed = true;
latch.countDown();
LOG.trace("Task {} succeeded and the current task won't be
schedulable anymore: {}", name, latch.getCount());
}
}
@Override
public <T> boolean run(Predicate<T> predicate, T payload) {
- CountDownLatch latch = new CountDownLatch(1);
-
- Future<?> task = service.scheduleAtFixedRate(() ->
runTaskWrapper(latch, predicate, payload),
- budget.initialDelay(), budget.interval(),
TimeUnit.MILLISECONDS);
-
- return waitForTaskCompletion(latch, task);
+ return this.run(() -> predicate.test(payload));
Review Comment:
That's a good idea. Should I add this to the PR?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]