diff --git a/application/src/main/java/org/thingsboard/server/service/job/DefaultJobManager.java b/application/src/main/java/org/thingsboard/server/service/job/DefaultJobManager.java index 379e72d28b..2ed8ed8a42 100644 --- a/application/src/main/java/org/thingsboard/server/service/job/DefaultJobManager.java +++ b/application/src/main/java/org/thingsboard/server/service/job/DefaultJobManager.java @@ -49,6 +49,7 @@ import java.util.List; import java.util.Map; import java.util.UUID; import java.util.concurrent.ExecutorService; +import java.util.concurrent.Future; import java.util.function.Function; import java.util.stream.Collectors; @@ -77,9 +78,9 @@ public class DefaultJobManager implements JobManager { } @Override - public Job submitJob(Job job) { + public Future submitJob(Job job) { log.debug("Submitting job: {}", job); - return jobService.saveJob(job.getTenantId(), job); + return executor.submit(() -> jobService.saveJob(job.getTenantId(), job)); } @Override diff --git a/application/src/test/java/org/thingsboard/server/service/job/JobManagerTest.java b/application/src/test/java/org/thingsboard/server/service/job/JobManagerTest.java index 14c0e4e847..0243d119b1 100644 --- a/application/src/test/java/org/thingsboard/server/service/job/JobManagerTest.java +++ b/application/src/test/java/org/thingsboard/server/service/job/JobManagerTest.java @@ -15,6 +15,7 @@ */ package org.thingsboard.server.service.job; +import lombok.SneakyThrows; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -454,6 +455,7 @@ public class JobManagerTest extends AbstractControllerTest { return submitJob(configuration, "test-job"); } + @SneakyThrows private Job submitJob(DummyJobConfiguration configuration, String key) { return jobManager.submitJob(Job.builder() .tenantId(tenantId) @@ -461,7 +463,7 @@ public class JobManagerTest extends AbstractControllerTest { .key(key) .entityId(jobEntity.getId()) .configuration(configuration) - .build()); + .build()).get(); } private List getFailures(JobResult jobResult) { diff --git a/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/JobManager.java b/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/JobManager.java index 89434b20cf..aa48f9a9fb 100644 --- a/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/JobManager.java +++ b/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/JobManager.java @@ -19,9 +19,11 @@ import org.thingsboard.server.common.data.id.JobId; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.job.Job; +import java.util.concurrent.Future; + public interface JobManager { - Job submitJob(Job job); // TODO: rate limits + Future submitJob(Job job); // TODO: rate limits void cancelJob(TenantId tenantId, JobId jobId);