diff --git a/common/dao-api/src/main/java/org/thingsboard/server/dao/job/JobService.java b/common/dao-api/src/main/java/org/thingsboard/server/dao/job/JobService.java index 65b21853b8..3c00b2fe0e 100644 --- a/common/dao-api/src/main/java/org/thingsboard/server/dao/job/JobService.java +++ b/common/dao-api/src/main/java/org/thingsboard/server/dao/job/JobService.java @@ -37,6 +37,6 @@ public interface JobService extends EntityDaoService { PageData findJobsByTenantId(TenantId tenantId, PageLink pageLink); - Job findJobByKey(TenantId tenantId, String key); + Job findLatestJobByKey(TenantId tenantId, String key); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/job/DefaultJobService.java b/dao/src/main/java/org/thingsboard/server/dao/job/DefaultJobService.java index 6cc315c8f8..ce4aa47741 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/job/DefaultJobService.java +++ b/dao/src/main/java/org/thingsboard/server/dao/job/DefaultJobService.java @@ -55,7 +55,7 @@ public class DefaultJobService extends AbstractEntityService implements JobServi @Transactional @Override public Job submitJob(TenantId tenantId, Job job) { - if (jobDao.existsByKeyAndStatusOneOf(job.getKey(), QUEUED, PENDING, RUNNING)) { + if (jobDao.existsByTenantAndKeyAndStatusOneOf(tenantId, job.getKey(), QUEUED, PENDING, RUNNING)) { throw new IllegalArgumentException("The same job is already queued or running"); } if (jobDao.existsByTenantIdAndTypeAndStatusOneOf(tenantId, job.getType(), PENDING, RUNNING)) { @@ -188,8 +188,8 @@ public class DefaultJobService extends AbstractEntityService implements JobServi } @Override - public Job findJobByKey(TenantId tenantId, String key) { - return jobDao.findByKey(tenantId, key); + public Job findLatestJobByKey(TenantId tenantId, String key) { + return jobDao.findLatestByKey(tenantId, key); } private Job findForUpdate(TenantId tenantId, JobId jobId) { diff --git a/dao/src/main/java/org/thingsboard/server/dao/job/JobDao.java b/dao/src/main/java/org/thingsboard/server/dao/job/JobDao.java index a892fb3e22..67a234245d 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/job/JobDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/job/JobDao.java @@ -30,9 +30,9 @@ public interface JobDao extends Dao { Job findByIdForUpdate(TenantId tenantId, JobId jobId); - Job findByKey(TenantId tenantId, String key); + Job findLatestByKey(TenantId tenantId, String key); - boolean existsByKeyAndStatusOneOf(String key, JobStatus... statuses); + boolean existsByTenantAndKeyAndStatusOneOf(TenantId tenantId, String key, JobStatus... statuses); boolean existsByTenantIdAndTypeAndStatusOneOf(TenantId tenantId, JobType type, JobStatus... statuses); diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/job/JobRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/job/JobRepository.java index bbbdbf3a47..0cc43375fe 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/job/JobRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/job/JobRepository.java @@ -45,15 +45,15 @@ public interface JobRepository extends JpaRepository { @Query("SELECT j FROM JobEntity j WHERE j.id = :id") JobEntity findByIdForUpdate(UUID id); - JobEntity findByTenantIdAndKey(@Param("tenantId") UUID tenantId, @Param("key") String key); + JobEntity findLatestByTenantIdAndKey(UUID tenantId, String key); - boolean existsByKeyAndStatusIn(String key, List statuses); + boolean existsByTenantIdAndKeyAndStatusIn(UUID tenantId, String key, List statuses); boolean existsByTenantIdAndTypeAndStatusIn(UUID tenantId, JobType type, List statuses); @Lock(LockModeType.PESSIMISTIC_WRITE) // SELECT FOR UPDATE @Query("SELECT j FROM JobEntity j WHERE j.tenantId = :tenantId AND j.type = :type " + - "AND j.status = :status ORDER BY j.createdTime ASC, j.id ASC") + "AND j.status = :status ORDER BY j.createdTime ASC, j.id ASC") JobEntity findOldestByTenantIdAndTypeAndStatusForUpdate(UUID tenantId, JobType type, JobStatus status, Limit limit); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/job/JpaJobDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/job/JpaJobDao.java index 71bbdb2f79..7d8def5792 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/job/JpaJobDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/job/JpaJobDao.java @@ -55,13 +55,13 @@ public class JpaJobDao extends JpaAbstractDao implements JobDao } @Override - public Job findByKey(TenantId tenantId, String key) { - return DaoUtil.getData(jobRepository.findByTenantIdAndKey(tenantId.getId(), key)); + public Job findLatestByKey(TenantId tenantId, String key) { + return DaoUtil.getData(jobRepository.findLatestByTenantIdAndKey(tenantId.getId(), key)); } @Override - public boolean existsByKeyAndStatusOneOf(String key, JobStatus... statuses) { - return jobRepository.existsByKeyAndStatusIn(key, Arrays.stream(statuses).toList()); + public boolean existsByTenantAndKeyAndStatusOneOf(TenantId tenantId, String key, JobStatus... statuses) { + return jobRepository.existsByTenantIdAndKeyAndStatusIn(tenantId.getId(), key, Arrays.stream(statuses).toList()); } @Override