Project

General

Profile

« Previous | Next » 

Revision 44375

avoid the massive launch of scheduled wfs after a server stop/pause

View differences:

ScheduledWorkflowLauncher.java
30 30

  
31 31
	private GraphProcessRegistry graphProcessRegistry;
32 32

  
33
	private int windowSize = 7200000; // 2 hours
33
	private int windowSize = 1800000; // 30 minutes
34 34

  
35 35
	@Resource
36 36
	private UniqueServiceLocator serviceLocator;
......
48 48
				final String[] arr = s.split("@@@");
49 49
				final String id = arr[0].trim();
50 50
				final String cron = arr[1].trim();
51
				final int minInterval = NumberUtils.toInt(arr[2].trim(), 0);
51
				final int minInterval = Math.max(NumberUtils.toInt(arr[2].trim(), 0), windowSize);
52 52
				final Date lastExecutionDate = calculateLastExecutionDate(id);
53 53

  
54 54
				if (isReady(id, cron, minInterval, lastExecutionDate, new Date()) && !isAlreadyRunning(id)) {
......
73 73
			final boolean res;
74 74
			if (lastExecutionDate != null) {
75 75
				final int elapsed = Math.round(now.getTime() - lastExecutionDate.getTime());
76
				res = (elapsed > minIntervalMillis) && verifyCron(cron, lastExecutionDate, now);
76
				res = (elapsed > minIntervalMillis) && verifyCron(cron, now);
77 77
			} else {
78
				res = verifyCron(cron, null, now);
78
				res = verifyCron(cron, now);
79 79
			}
80 80

  
81 81
			if (log.isDebugEnabled()) {
......
96 96
		return false;
97 97
	}
98 98

  
99
	private boolean verifyCron(final String cronExpression, final Date prevDate, final Date now) {
99
	private boolean verifyCron(final String cronExpression, final Date now) {
100 100
		try {
101 101
			final CronExpression cron = new CronExpression(cronExpression);
102 102

  
103
			final Date startWindowDate = new Date(now.getTime() - windowSize);
103
			final Date date = new Date(now.getTime() - windowSize);
104 104

  
105
			final Date date = prevDate != null ? prevDate : startWindowDate;
106 105
			final Date cronDate = cron.getNextValidTimeAfter(date);
107 106

  
108 107
			if (log.isDebugEnabled()) {

Also available in: Unified diff