You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ds...@apache.org on 2017/02/14 16:10:32 UTC
ambari git commit: AMBARI-20010 Critical alert: 'Percent JournalNodes
Available' appears after upgrade from ambari 2.2.2.0 to 2.5.0.0 (dsen)
Repository: ambari
Updated Branches:
refs/heads/trunk f8c34a088 -> bda839e1f
AMBARI-20010 Critical alert: 'Percent JournalNodes Available' appears after upgrade from ambari 2.2.2.0 to 2.5.0.0 (dsen)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/bda839e1
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/bda839e1
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/bda839e1
Branch: refs/heads/trunk
Commit: bda839e1f1452dc711f7e33888ffa90b79e7be27
Parents: f8c34a0
Author: Dmytro Sen <ds...@apache.org>
Authored: Tue Feb 14 18:09:42 2017 +0200
Committer: Dmytro Sen <ds...@apache.org>
Committed: Tue Feb 14 18:10:00 2017 +0200
----------------------------------------------------------------------
.../server/upgrade/UpgradeCatalog250.java | 37 ++++++++++++++++++++
.../server/upgrade/UpgradeCatalog250Test.java | 5 +++
2 files changed, 42 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda839e1/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
index 1f93f1f..5e929e3 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
@@ -38,8 +38,11 @@ import org.apache.ambari.server.controller.AmbariManagementController;
import org.apache.ambari.server.orm.DBAccessor;
import org.apache.ambari.server.orm.DBAccessor.DBColumnInfo;
import org.apache.ambari.server.orm.dao.AlertDefinitionDAO;
+import org.apache.ambari.server.orm.dao.AlertsDAO;
import org.apache.ambari.server.orm.dao.DaoUtils;
+import org.apache.ambari.server.orm.entities.AlertCurrentEntity;
import org.apache.ambari.server.orm.entities.AlertDefinitionEntity;
+import org.apache.ambari.server.orm.entities.AlertHistoryEntity;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.Config;
@@ -162,6 +165,7 @@ public class UpgradeCatalog250 extends AbstractUpgradeCatalog {
addNewConfigurationsFromXml();
updateAMSConfigs();
updateStormAlerts();
+ removeAlertDuplicates();
updateHadoopEnvConfigs();
updateKafkaConfigs();
updateHIVEInteractiveConfigs();
@@ -176,6 +180,39 @@ public class UpgradeCatalog250 extends AbstractUpgradeCatalog {
addManageServiceAutoStartPermissions();
}
+ /**
+ * Removes all {@link AlertCurrentEntity} duplicates from database.
+ * Alerts are considered as duplicates if their definition, host and alert instance are the same.
+ * Duplicates could be created in earlier versions of Ambari up till 2.4.1.
+ */
+ protected void removeAlertDuplicates() {
+ AmbariManagementController ambariManagementController = injector.getInstance(AmbariManagementController.class);
+ AlertsDAO alertsDao = injector.getInstance(AlertsDAO.class);
+ Clusters clusters = ambariManagementController.getClusters();
+
+ Map<String, Cluster> clusterMap = getCheckedClusterMap(clusters);
+ for (final Cluster cluster : clusterMap.values()) {
+ long clusterID = cluster.getClusterId();
+ LOG.info("Removing alert duplicates on cluster {}", cluster.getClusterName());
+ List<AlertCurrentEntity> alertCurrentEntities = alertsDao.findCurrentByCluster(clusterID);
+ Set<AlertHistoryEntity> uniqueAlerts = new HashSet<>();
+ for (AlertCurrentEntity alertCurrentEntity : alertCurrentEntities) {
+
+ AlertHistoryEntity currentAlert = new AlertHistoryEntity();
+ currentAlert.setAlertDefinition(alertCurrentEntity.getAlertHistory().getAlertDefinition());
+ currentAlert.setHostName(alertCurrentEntity.getAlertHistory().getHostName());
+ currentAlert.setAlertInstance(alertCurrentEntity.getAlertHistory().getAlertInstance());
+
+ if (uniqueAlerts.contains(currentAlert)) {
+ LOG.info("Alert entity duplicate {} will be removed",alertCurrentEntity.getAlertHistory());
+ alertsDao.remove(alertCurrentEntity);
+ } else {
+ uniqueAlerts.add(currentAlert);
+ }
+ }
+ }
+ }
+
protected void updateStormAlerts() {
AmbariManagementController ambariManagementController = injector.getInstance(AmbariManagementController.class);
AlertDefinitionDAO alertDefinitionDAO = injector.getInstance(AlertDefinitionDAO.class);
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda839e1/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java
index cee490b..2836858 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java
@@ -367,6 +367,7 @@ public class UpgradeCatalog250Test {
Method updateRangerUrlConfigs = UpgradeCatalog250.class.getDeclaredMethod("updateRangerUrlConfigs");
Method updateYarnSite = UpgradeCatalog250.class.getDeclaredMethod("updateYarnSite");
Method updateAlerts = UpgradeCatalog250.class.getDeclaredMethod("updateStormAlerts");
+ Method removeAlertDuplicates = UpgradeCatalog250.class.getDeclaredMethod("removeAlertDuplicates");
UpgradeCatalog250 upgradeCatalog250 = createMockBuilder(UpgradeCatalog250.class)
.addMockedMethod(updateAmsConfigs)
@@ -384,6 +385,7 @@ public class UpgradeCatalog250Test {
.addMockedMethod(updateRangerUrlConfigs)
.addMockedMethod(updateYarnSite)
.addMockedMethod(updateAlerts)
+ .addMockedMethod(removeAlertDuplicates)
.createMock();
upgradeCatalog250.updateAMSConfigs();
@@ -431,6 +433,9 @@ public class UpgradeCatalog250Test {
upgradeCatalog250.updateStormAlerts();
expectLastCall().once();
+ upgradeCatalog250.removeAlertDuplicates();
+ expectLastCall().once();
+
replay(upgradeCatalog250);
upgradeCatalog250.executeDMLUpdates();