Skip to content

Commit bc5f3b9

Browse files
committed
Remove redundant Exceptions from logs for vm schedules
1 parent 5c1f931 commit bc5f3b9

File tree

3 files changed

+26
-1
lines changed

3 files changed

+26
-1
lines changed

engine/schema/src/main/java/org/apache/cloudstack/vm/schedule/dao/VMScheduledJobDao.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,6 @@ public interface VMScheduledJobDao extends GenericDao<VMScheduledJobVO, Long> {
3131
int expungeJobsForSchedules(List<Long> scheduleId, Date dateAfter);
3232

3333
int expungeJobsBefore(Date currentTimestamp);
34+
35+
VMScheduledJobVO findByScheduleAndTimestamp(long scheduleId, Date scheduledTimestamp);
3436
}

engine/schema/src/main/java/org/apache/cloudstack/vm/schedule/dao/VMScheduledJobDaoImpl.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ public class VMScheduledJobDaoImpl extends GenericDaoBase<VMScheduledJobVO, Long
3939

4040
private final SearchBuilder<VMScheduledJobVO> expungeJobForScheduleSearch;
4141

42+
private final SearchBuilder<VMScheduledJobVO> scheduleAndTimestampSearch;
43+
4244
static final String SCHEDULED_TIMESTAMP = "scheduled_timestamp";
4345

4446
static final String VM_SCHEDULE_ID = "vm_schedule_id";
@@ -58,6 +60,11 @@ public VMScheduledJobDaoImpl() {
5860
expungeJobForScheduleSearch.and(VM_SCHEDULE_ID, expungeJobForScheduleSearch.entity().getVmScheduleId(), SearchCriteria.Op.IN);
5961
expungeJobForScheduleSearch.and(SCHEDULED_TIMESTAMP, expungeJobForScheduleSearch.entity().getScheduledTime(), SearchCriteria.Op.GTEQ);
6062
expungeJobForScheduleSearch.done();
63+
64+
scheduleAndTimestampSearch = createSearchBuilder();
65+
scheduleAndTimestampSearch.and(VM_SCHEDULE_ID, scheduleAndTimestampSearch.entity().getVmScheduleId(), SearchCriteria.Op.EQ);
66+
scheduleAndTimestampSearch.and(SCHEDULED_TIMESTAMP, scheduleAndTimestampSearch.entity().getScheduledTime(), SearchCriteria.Op.EQ);
67+
scheduleAndTimestampSearch.done();
6168
}
6269

6370
/**
@@ -92,4 +99,12 @@ public int expungeJobsBefore(Date date) {
9299
sc.setParameters(SCHEDULED_TIMESTAMP, date);
93100
return expunge(sc);
94101
}
102+
103+
@Override
104+
public VMScheduledJobVO findByScheduleAndTimestamp(long scheduleId, Date scheduledTimestamp) {
105+
SearchCriteria<VMScheduledJobVO> sc = scheduleAndTimestampSearch.create();
106+
sc.setParameters(VM_SCHEDULE_ID, scheduleId);
107+
sc.setParameters(SCHEDULED_TIMESTAMP, scheduledTimestamp);
108+
return findOneBy(sc);
109+
}
95110
}

server/src/main/java/org/apache/cloudstack/vm/schedule/VMSchedulerImpl.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@
4747

4848
import javax.inject.Inject;
4949
import javax.persistence.EntityExistsException;
50+
import java.sql.SQLException;
51+
import java.sql.SQLIntegrityConstraintViolationException;
5052
import java.time.ZonedDateTime;
5153
import java.util.ArrayList;
5254
import java.util.Arrays;
@@ -162,7 +164,13 @@ public Date scheduleNextJob(VMScheduleVO vmSchedule, Date timestamp) {
162164
}
163165

164166
Date scheduledDateTime = Date.from(ts.toInstant());
165-
VMScheduledJobVO scheduledJob = new VMScheduledJobVO(vmSchedule.getVmId(), vmSchedule.getId(), vmSchedule.getAction(), scheduledDateTime);
167+
VMScheduledJobVO scheduledJob = vmScheduledJobDao.findByScheduleAndTimestamp(vmSchedule.getId(), scheduledDateTime);
168+
if (scheduledJob != null) {
169+
logger.trace("Job is already scheduled for schedule {} at {}", vmSchedule, scheduledDateTime);
170+
return scheduledDateTime;
171+
}
172+
173+
scheduledJob = new VMScheduledJobVO(vmSchedule.getVmId(), vmSchedule.getId(), vmSchedule.getAction(), scheduledDateTime);
166174
try {
167175
vmScheduledJobDao.persist(scheduledJob);
168176
ActionEventUtils.onScheduledActionEvent(User.UID_SYSTEM, vm.getAccountId(), actionEventMap.get(vmSchedule.getAction()),

0 commit comments

Comments
 (0)