Fix to alarm state change during missing originator
This commit is contained in:
parent
17825b2cb4
commit
14c5cf242c
@ -47,6 +47,7 @@ import javax.annotation.PostConstruct;
|
|||||||
import javax.annotation.PreDestroy;
|
import javax.annotation.PreDestroy;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
@ -336,15 +337,11 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ
|
|||||||
|
|
||||||
private void updateRelations(Alarm alarm, AlarmStatus oldStatus, AlarmStatus newStatus) {
|
private void updateRelations(Alarm alarm, AlarmStatus oldStatus, AlarmStatus newStatus) {
|
||||||
try {
|
try {
|
||||||
if (alarm.isPropagate()) {
|
List<EntityRelation> relations = relationService.findByTo(alarm.getId(), RelationTypeGroup.ALARM).get();
|
||||||
EntityRelationsQuery query = new EntityRelationsQuery();
|
Set<EntityId> parents = relations.stream().map(EntityRelation::getFrom).collect(Collectors.toSet());
|
||||||
query.setParameters(new RelationsSearchParameters(alarm.getOriginator(), EntitySearchDirection.TO, Integer.MAX_VALUE));
|
for (EntityId parentId : parents) {
|
||||||
List<EntityId> parentEntities = relationService.findByQuery(query).get().stream().map(r -> r.getFrom()).collect(Collectors.toList());
|
|
||||||
for (EntityId parentId : parentEntities) {
|
|
||||||
updateAlarmRelation(parentId, alarm.getId(), oldStatus, newStatus);
|
updateAlarmRelation(parentId, alarm.getId(), oldStatus, newStatus);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
updateAlarmRelation(alarm.getOriginator(), alarm.getId(), oldStatus, newStatus);
|
|
||||||
} catch (ExecutionException | InterruptedException e) {
|
} catch (ExecutionException | InterruptedException e) {
|
||||||
log.warn("[{}] Failed to update relations. Old status: [{}], New status: [{}]", alarm.getId(), oldStatus, newStatus);
|
log.warn("[{}] Failed to update relations. Old status: [{}], New status: [{}]", alarm.getId(), oldStatus, newStatus);
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user