updated methods
This commit is contained in:
parent
5f9afd14d3
commit
874d59a706
@ -37,6 +37,6 @@ public interface JobService extends EntityDaoService {
|
|||||||
|
|
||||||
PageData<Job> findJobsByTenantId(TenantId tenantId, PageLink pageLink);
|
PageData<Job> findJobsByTenantId(TenantId tenantId, PageLink pageLink);
|
||||||
|
|
||||||
Job findJobByKey(TenantId tenantId, String key);
|
Job findLatestJobByKey(TenantId tenantId, String key);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -55,7 +55,7 @@ public class DefaultJobService extends AbstractEntityService implements JobServi
|
|||||||
@Transactional
|
@Transactional
|
||||||
@Override
|
@Override
|
||||||
public Job submitJob(TenantId tenantId, Job job) {
|
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");
|
throw new IllegalArgumentException("The same job is already queued or running");
|
||||||
}
|
}
|
||||||
if (jobDao.existsByTenantIdAndTypeAndStatusOneOf(tenantId, job.getType(), PENDING, RUNNING)) {
|
if (jobDao.existsByTenantIdAndTypeAndStatusOneOf(tenantId, job.getType(), PENDING, RUNNING)) {
|
||||||
@ -188,8 +188,8 @@ public class DefaultJobService extends AbstractEntityService implements JobServi
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Job findJobByKey(TenantId tenantId, String key) {
|
public Job findLatestJobByKey(TenantId tenantId, String key) {
|
||||||
return jobDao.findByKey(tenantId, key);
|
return jobDao.findLatestByKey(tenantId, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Job findForUpdate(TenantId tenantId, JobId jobId) {
|
private Job findForUpdate(TenantId tenantId, JobId jobId) {
|
||||||
|
|||||||
@ -30,9 +30,9 @@ public interface JobDao extends Dao<Job> {
|
|||||||
|
|
||||||
Job findByIdForUpdate(TenantId tenantId, JobId jobId);
|
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);
|
boolean existsByTenantIdAndTypeAndStatusOneOf(TenantId tenantId, JobType type, JobStatus... statuses);
|
||||||
|
|
||||||
|
|||||||
@ -45,15 +45,15 @@ public interface JobRepository extends JpaRepository<JobEntity, UUID> {
|
|||||||
@Query("SELECT j FROM JobEntity j WHERE j.id = :id")
|
@Query("SELECT j FROM JobEntity j WHERE j.id = :id")
|
||||||
JobEntity findByIdForUpdate(UUID 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<JobStatus> statuses);
|
boolean existsByTenantIdAndKeyAndStatusIn(UUID tenantId, String key, List<JobStatus> statuses);
|
||||||
|
|
||||||
boolean existsByTenantIdAndTypeAndStatusIn(UUID tenantId, JobType type, List<JobStatus> statuses);
|
boolean existsByTenantIdAndTypeAndStatusIn(UUID tenantId, JobType type, List<JobStatus> statuses);
|
||||||
|
|
||||||
@Lock(LockModeType.PESSIMISTIC_WRITE) // SELECT FOR UPDATE
|
@Lock(LockModeType.PESSIMISTIC_WRITE) // SELECT FOR UPDATE
|
||||||
@Query("SELECT j FROM JobEntity j WHERE j.tenantId = :tenantId AND j.type = :type " +
|
@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);
|
JobEntity findOldestByTenantIdAndTypeAndStatusForUpdate(UUID tenantId, JobType type, JobStatus status, Limit limit);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -55,13 +55,13 @@ public class JpaJobDao extends JpaAbstractDao<JobEntity, Job> implements JobDao
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Job findByKey(TenantId tenantId, String key) {
|
public Job findLatestByKey(TenantId tenantId, String key) {
|
||||||
return DaoUtil.getData(jobRepository.findByTenantIdAndKey(tenantId.getId(), key));
|
return DaoUtil.getData(jobRepository.findLatestByTenantIdAndKey(tenantId.getId(), key));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean existsByKeyAndStatusOneOf(String key, JobStatus... statuses) {
|
public boolean existsByTenantAndKeyAndStatusOneOf(TenantId tenantId, String key, JobStatus... statuses) {
|
||||||
return jobRepository.existsByKeyAndStatusIn(key, Arrays.stream(statuses).toList());
|
return jobRepository.existsByTenantIdAndKeyAndStatusIn(tenantId.getId(), key, Arrays.stream(statuses).toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user