Revision 44375
Added by Michele Artini over 7 years ago
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
avoid the massive launch of scheduled wfs after a server stop/pause