Skip to content

Commit e654122

Browse files
changes/improvements
1 parent 1713907 commit e654122

2 files changed

Lines changed: 26 additions & 12 deletions

File tree

engine/schema/src/main/java/com/cloud/event/dao/EventDaoImpl.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.util.stream.Collectors;
2222

2323

24+
import org.apache.commons.collections.CollectionUtils;
2425
import org.springframework.stereotype.Component;
2526

2627
import com.cloud.event.Event.State;
@@ -106,14 +107,16 @@ public List<EventVO> listToArchiveOrDeleteEvents(List<Long> ids, String type, Da
106107

107108
@Override
108109
public void archiveEvents(List<EventVO> events) {
109-
if (events != null && !events.isEmpty()) {
110-
List<Long> ids = events.stream().map(EventVO::getId).collect(Collectors.toList());
111-
SearchCriteria<EventVO> sc = ArchiveByIdsSearch.create();
112-
sc.setParameters("id", ids.toArray(new Object[ids.size()]));
113-
EventVO eventForUpdate = createForUpdate();
114-
eventForUpdate.setArchived(true);
115-
UpdateBuilder ub = getUpdateBuilder(eventForUpdate);
116-
update(ub, sc, null);
110+
if (CollectionUtils.isEmpty(events)) {
111+
return;
117112
}
113+
114+
List<Long> ids = events.stream().map(EventVO::getId).collect(Collectors.toList());
115+
SearchCriteria<EventVO> sc = ArchiveByIdsSearch.create();
116+
sc.setParameters("id", ids.toArray(new Object[ids.size()]));
117+
EventVO eventForUpdate = createForUpdate();
118+
eventForUpdate.setArchived(true);
119+
UpdateBuilder ub = getUpdateBuilder(eventForUpdate);
120+
update(ub, sc, null);
118121
}
119122
}

engine/schema/src/main/java/com/cloud/network/security/dao/SecurityGroupWorkDaoImpl.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ public SecurityGroupWorkVO take(long serverId) {
116116
//ensure that there is no job in Processing state for the same VM
117117
processing = true;
118118
if (logger.isTraceEnabled()) {
119-
logger.trace("Security Group work take: found a job in Scheduled and Processing vmid=" + work.getInstanceId());
119+
logger.trace("Security Group work take: found a job in Scheduled and Processing vmid={}", work.getInstanceId());
120120
}
121121
}
122122
work.setServerId(serverId);
@@ -142,13 +142,24 @@ public SecurityGroupWorkVO take(long serverId) {
142142

143143
@Override
144144
public void updateStep(Long vmId, Long logSequenceNumber, Step step) {
145+
final TransactionLegacy txn = TransactionLegacy.currentTxn();
146+
txn.start();
145147
SearchCriteria<SecurityGroupWorkVO> sc = VmIdSeqNumSearch.create();
146148
sc.setParameters("vmId", vmId);
147149
sc.setParameters("seqno", logSequenceNumber);
148150

149-
SecurityGroupWorkVO workForUpdate = createForUpdate();
150-
workForUpdate.setStep(step);
151-
update(workForUpdate, sc);
151+
final Filter filter = new Filter(SecurityGroupWorkVO.class, null, true, 0l, 1l);
152+
153+
final List<SecurityGroupWorkVO> vos = lockRows(sc, filter, true);
154+
if (vos.size() == 0) {
155+
txn.commit();
156+
return;
157+
}
158+
SecurityGroupWorkVO work = vos.get(0);
159+
work.setStep(step);
160+
update(work.getId(), work);
161+
162+
txn.commit();
152163
}
153164

154165
@Override

0 commit comments

Comments
 (0)