Skip to content

Commit e991bc7

Browse files
committed
Implement Scheduler component for cron jobs
1 parent fb667f5 commit e991bc7

File tree

1 file changed

+36
-4
lines changed

1 file changed

+36
-4
lines changed
Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,58 @@
1-
package org.commonwl.view.workflow;
1+
package org.commonwl.view;
22

33

4+
import org.commonwl.view.workflow.QueuedWorkflowRepository;
5+
import org.slf4j.Logger;
6+
import org.slf4j.LoggerFactory;
47
import org.springframework.beans.factory.annotation.Autowired;
8+
import org.springframework.beans.factory.annotation.Value;
59
import org.springframework.scheduling.annotation.Scheduled;
610
import org.springframework.stereotype.Component;
711

12+
import java.util.Calendar;
813
import java.util.Date;
914

15+
/**
16+
* Scheduler class for recurrent processes.
17+
*/
1018
@Component
1119
public class Scheduler {
1220

21+
private final Logger logger = LoggerFactory.getLogger(this.getClass());
1322
private final QueuedWorkflowRepository queuedWorkflowRepository;
1423

24+
@Value("${queuedWorkflowAgeLimitHours}")
25+
private Integer QUEUED_WORKFLOW_AGE_LIMIT_HOURS;
26+
1527
@Autowired
1628
public Scheduler(QueuedWorkflowRepository queuedWorkflowRepository) {
1729
this.queuedWorkflowRepository = queuedWorkflowRepository;
1830
}
1931

20-
@Scheduled(cron = "* * * * * ?")
32+
33+
/**
34+
* A Scheduled function to delete old queued workflow entries
35+
* from the queue. Age is determined by DELETE_INTERVAL_HOUR
36+
*/
37+
@Scheduled(cron = "${cron.deleteOldQueuedWorkflows}")
2138
public void removeOldQueuedWorkflowEntries() {
39+
Calendar calendar = Calendar.getInstance();
2240
Date now = new Date();
23-
System.out.println("The time is " + now);
24-
System.out.println("The repository is " + queuedWorkflowRepository.toString());
41+
calendar.setTime(now);
42+
43+
if (QUEUED_WORKFLOW_AGE_LIMIT_HOURS == null) {
44+
QUEUED_WORKFLOW_AGE_LIMIT_HOURS = 24;
45+
}
46+
47+
// calculate time QUEUED_WORKFLOW_AGE_LIMIT_HOURS before now
48+
calendar.add(Calendar.HOUR, -QUEUED_WORKFLOW_AGE_LIMIT_HOURS);
49+
Date removeTime = calendar.getTime();
50+
51+
logger.info("The time is " + now);
52+
logger.info("Delete time interval is : OLDER THAN " + QUEUED_WORKFLOW_AGE_LIMIT_HOURS + " HOURS");
53+
logger.info("Deleting queued workflows older than or equal to " + removeTime);
54+
55+
logger.info(queuedWorkflowRepository.deleteByTempRepresentation_RetrievedOnLessThanEqual(removeTime)
56+
+ " Old queued workflows removed");
2557
}
2658
}

0 commit comments

Comments
 (0)