orpiske commented on code in PR #8785: URL: https://github.com/apache/camel/pull/8785#discussion_r1034417403
########## 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: +1. That would be better / cleaner. -- 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: commits-unsubscr...@camel.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org