Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE TABLE job (
- id INT PRIMARY KEY AUTO_INCREMENT,
- owner VARCHAR(50),
- status VARCHAR(10) );
- START TRANSACTION;
- INSERT INTO job (owner, status)
- SELECT 'fred', 'init' FROM DUAL
- WHERE NOT EXISTS
- ( SELECT 1 FROM job
- WHERE owner = 'fred' AND status IN ('init', 'running')
- );
- COMMIT;
- @Lock(LockModeType.READ)
- long countByOwnerAndSeatIdAndStatusIn(String owner, List<String> status);
- @Transactional
- public Job createJob(Job job) {
- if (jobRepository.countByOwnerAndStatusIn(job.getOwner(), Job.PROGRESS_STATUS) == 0) {
- // Sleeps just to ensure conflicts
- Thread.sleep(1000);
- Job newJob = jobRepository.save(job);
- Thread.sleep(1000);
- return newJob
- }
- else {
- return null;
- }
- }
Add Comment
Please, Sign In to add comment