This is an automated email from the ASF dual-hosted git repository.
dahn pushed a commit to branch 4.20
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.20 by this push:
new d1eb2822d9d Remove redundant Exceptions from logs for vm schedules
(#12428)
d1eb2822d9d is described below
commit d1eb2822d9d5b346840851cf21611345454ed734
Author: Vishesh <[email protected]>
AuthorDate: Thu Jan 22 18:59:35 2026 +0530
Remove redundant Exceptions from logs for vm schedules (#12428)
---
.../cloudstack/vm/schedule/dao/VMScheduledJobDao.java | 2 ++
.../cloudstack/vm/schedule/dao/VMScheduledJobDaoImpl.java | 15 +++++++++++++++
.../apache/cloudstack/vm/schedule/VMSchedulerImpl.java | 8 +++++++-
3 files changed, 24 insertions(+), 1 deletion(-)
diff --git
a/engine/schema/src/main/java/org/apache/cloudstack/vm/schedule/dao/VMScheduledJobDao.java
b/engine/schema/src/main/java/org/apache/cloudstack/vm/schedule/dao/VMScheduledJobDao.java
index 7b8c01aae6a..835ac696f26 100644
---
a/engine/schema/src/main/java/org/apache/cloudstack/vm/schedule/dao/VMScheduledJobDao.java
+++
b/engine/schema/src/main/java/org/apache/cloudstack/vm/schedule/dao/VMScheduledJobDao.java
@@ -31,4 +31,6 @@ public interface VMScheduledJobDao extends
GenericDao<VMScheduledJobVO, Long> {
int expungeJobsForSchedules(List<Long> scheduleId, Date dateAfter);
int expungeJobsBefore(Date currentTimestamp);
+
+ VMScheduledJobVO findByScheduleAndTimestamp(long scheduleId, Date
scheduledTimestamp);
}
diff --git
a/engine/schema/src/main/java/org/apache/cloudstack/vm/schedule/dao/VMScheduledJobDaoImpl.java
b/engine/schema/src/main/java/org/apache/cloudstack/vm/schedule/dao/VMScheduledJobDaoImpl.java
index 50a2b12fd77..2f08a41b92e 100644
---
a/engine/schema/src/main/java/org/apache/cloudstack/vm/schedule/dao/VMScheduledJobDaoImpl.java
+++
b/engine/schema/src/main/java/org/apache/cloudstack/vm/schedule/dao/VMScheduledJobDaoImpl.java
@@ -39,6 +39,8 @@ public class VMScheduledJobDaoImpl extends
GenericDaoBase<VMScheduledJobVO, Long
private final SearchBuilder<VMScheduledJobVO> expungeJobForScheduleSearch;
+ private final SearchBuilder<VMScheduledJobVO> scheduleAndTimestampSearch;
+
static final String SCHEDULED_TIMESTAMP = "scheduled_timestamp";
static final String VM_SCHEDULE_ID = "vm_schedule_id";
@@ -58,6 +60,11 @@ public class VMScheduledJobDaoImpl extends
GenericDaoBase<VMScheduledJobVO, Long
expungeJobForScheduleSearch.and(VM_SCHEDULE_ID,
expungeJobForScheduleSearch.entity().getVmScheduleId(), SearchCriteria.Op.IN);
expungeJobForScheduleSearch.and(SCHEDULED_TIMESTAMP,
expungeJobForScheduleSearch.entity().getScheduledTime(),
SearchCriteria.Op.GTEQ);
expungeJobForScheduleSearch.done();
+
+ scheduleAndTimestampSearch = createSearchBuilder();
+ scheduleAndTimestampSearch.and(VM_SCHEDULE_ID,
scheduleAndTimestampSearch.entity().getVmScheduleId(), SearchCriteria.Op.EQ);
+ scheduleAndTimestampSearch.and(SCHEDULED_TIMESTAMP,
scheduleAndTimestampSearch.entity().getScheduledTime(), SearchCriteria.Op.EQ);
+ scheduleAndTimestampSearch.done();
}
/**
@@ -92,4 +99,12 @@ public class VMScheduledJobDaoImpl extends
GenericDaoBase<VMScheduledJobVO, Long
sc.setParameters(SCHEDULED_TIMESTAMP, date);
return expunge(sc);
}
+
+ @Override
+ public VMScheduledJobVO findByScheduleAndTimestamp(long scheduleId, Date
scheduledTimestamp) {
+ SearchCriteria<VMScheduledJobVO> sc =
scheduleAndTimestampSearch.create();
+ sc.setParameters(VM_SCHEDULE_ID, scheduleId);
+ sc.setParameters(SCHEDULED_TIMESTAMP, scheduledTimestamp);
+ return findOneBy(sc);
+ }
}
diff --git
a/server/src/main/java/org/apache/cloudstack/vm/schedule/VMSchedulerImpl.java
b/server/src/main/java/org/apache/cloudstack/vm/schedule/VMSchedulerImpl.java
index 7410fb1c265..56d794fa5c2 100644
---
a/server/src/main/java/org/apache/cloudstack/vm/schedule/VMSchedulerImpl.java
+++
b/server/src/main/java/org/apache/cloudstack/vm/schedule/VMSchedulerImpl.java
@@ -162,7 +162,13 @@ public class VMSchedulerImpl extends ManagerBase
implements VMScheduler, Configu
}
Date scheduledDateTime = Date.from(ts.toInstant());
- VMScheduledJobVO scheduledJob = new
VMScheduledJobVO(vmSchedule.getVmId(), vmSchedule.getId(),
vmSchedule.getAction(), scheduledDateTime);
+ VMScheduledJobVO scheduledJob =
vmScheduledJobDao.findByScheduleAndTimestamp(vmSchedule.getId(),
scheduledDateTime);
+ if (scheduledJob != null) {
+ logger.trace("Job is already scheduled for schedule {} at {}",
vmSchedule, scheduledDateTime);
+ return scheduledDateTime;
+ }
+
+ scheduledJob = new VMScheduledJobVO(vmSchedule.getVmId(),
vmSchedule.getId(), vmSchedule.getAction(), scheduledDateTime);
try {
vmScheduledJobDao.persist(scheduledJob);
ActionEventUtils.onScheduledActionEvent(User.UID_SYSTEM,
vm.getAccountId(), actionEventMap.get(vmSchedule.getAction()),