Bug 1030031
Summary: | NonUniqueResultException thrown from AlertDefinitionManagerBean | ||
---|---|---|---|
Product: | [Other] RHQ Project | Reporter: | Elias Ross <genman> |
Component: | Core Server | Assignee: | Nobody <nobody> |
Status: | NEW --- | QA Contact: | |
Severity: | unspecified | Docs Contact: | |
Priority: | unspecified | ||
Version: | 4.9 | CC: | hrupp |
Target Milestone: | --- | ||
Target Release: | --- | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | Bug Fix | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | Type: | Bug | |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Elias Ross
2013-11-13 18:34:22 UTC
Simple patch: diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/ent index 330eb0d..3330141 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java @@ -302,8 +302,11 @@ private void fixRecoveryId(AlertDefinition definition) { fixRecoveryIdQuery.setParameter("resourceId", definition.getResource().getId()); // definition.recoveryId current points at the toBeRecovered template, we want the definition fixRecoveryIdQuery.setParameter("parentId", definition.getRecoveryId()); // wrong one to be replaced - Integer correctRecoveryId = (Integer) fixRecoveryIdQuery.getSingleResult(); - definition.setRecoveryId(correctRecoveryId); + List<Integer> resultList = fixRecoveryIdQuery.getResultList(); + if (!resultList.isEmpty()) { + Integer correctRecoveryId = resultList.get(0); + definition.setRecoveryId(correctRecoveryId); + } } else if (definition.getGroupAlertDefinition() != null && definition.getRecoveryId() != 0) { // so we need to set the resource-level recovery id properly String findCorrectRecoveryId = "" // @@ -315,8 +318,11 @@ private void fixRecoveryId(AlertDefinition definition) { fixRecoveryIdQuery.setParameter("resourceId", definition.getResource().getId()); // definition.recoveryId current points at the toBeRecovered template, we want the definition fixRecoveryIdQuery.setParameter("groupAlertDefinitionId", definition.getRecoveryId()); // wrong one to be replaced - Integer correctRecoveryId = (Integer) fixRecoveryIdQuery.getSingleResult(); - definition.setRecoveryId(correctRecoveryId); + List<Integer> resultList = fixRecoveryIdQuery.getResultList(); + if (!resultList.isEmpty()) { + Integer correctRecoveryId = resultList.get(0); + definition.setRecoveryId(correctRecoveryId); + } } } catch (NoResultException nre) { // expected when the recovery ids have already been fixed |