[EAGLE-876] TopologyBaseAPIEntity comparison should consider rack info
https://issues.apache.org/jira/browse/EAGLE-876
Author: Zhao, Qingwen <qingwzhao@apache.org>
Closes #785 from qingwen220/EAGLE-876.
diff --git a/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/extractor/mr/MRTopologyEntityParser.java b/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/extractor/mr/MRTopologyEntityParser.java
index f860f1c..918679b 100644
--- a/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/extractor/mr/MRTopologyEntityParser.java
+++ b/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/extractor/mr/MRTopologyEntityParser.java
@@ -41,7 +41,8 @@
import java.util.regex.Matcher;
import static org.apache.eagle.topology.TopologyConstants.*;
-import static org.apache.eagle.topology.utils.EntityBuilderHelper.generateKey;
+import static org.apache.eagle.topology.utils.EntityBuilderHelper.generateHostKey;
+
public class MRTopologyEntityParser implements TopologyEntityParser {
@@ -156,7 +157,7 @@
nodeManagerEntity.setStatus(state);
}
- nodeKey = generateKey(nodeManagerEntity);
+ nodeKey = generateHostKey(nodeManagerEntity);
if (nmMap.containsKey(nodeKey)) {
if (nmMap.get(nodeKey).getLastUpdateTime() < nodeManagerEntity.getLastHealthUpdate()) {
updateStatusCount(statusCount, nmMap.get(nodeKey).getStatus(), -1);
@@ -219,4 +220,4 @@
return entity;
}
-}
+}
\ No newline at end of file
diff --git a/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/storm/TopologyDataPersistBolt.java b/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/storm/TopologyDataPersistBolt.java
index 9be78e0..4a61c89 100644
--- a/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/storm/TopologyDataPersistBolt.java
+++ b/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/storm/TopologyDataPersistBolt.java
@@ -19,7 +19,6 @@
package org.apache.eagle.topology.storm;
import static org.apache.eagle.topology.TopologyConstants.HOSTNAME_TAG;
-import static org.apache.eagle.topology.TopologyConstants.RACK_TAG;
import static org.apache.eagle.topology.TopologyConstants.ROLE_TAG;
import static org.apache.eagle.topology.TopologyConstants.SITE_TAG;
@@ -76,18 +75,18 @@
}
String serviceName = input.getStringByField(TopologyConstants.SERVICE_NAME_FIELD);
TopologyEntityParserResult result = (TopologyEntityParserResult) input.getValueByField(TopologyConstants.TOPOLOGY_DATA_FIELD);
- Set<String> availableHostnames = new HashSet<String>();
+ Set<String> availableHostNames = new HashSet<String>();
List<TopologyBaseAPIEntity> entitiesForDeletion = new ArrayList<>();
List<TopologyBaseAPIEntity> entitiesToWrite = new ArrayList<>();
- filterEntitiesToWrite(result, availableHostnames, entitiesToWrite);
+ filterEntitiesToWrite(result, availableHostNames, entitiesToWrite);
String query = String.format("%s[@site=\"%s\"]{*}", serviceName, this.config.dataExtractorConfig.site);
try {
GenericServiceAPIResponseEntity<TopologyBaseAPIEntity> response = client.search().query(query).pageSize(Integer.MAX_VALUE).send();
if (response.isSuccess() && response.getObj() != null) {
for (TopologyBaseAPIEntity entity : response.getObj()) {
- if (!availableHostnames.isEmpty() && !availableHostnames.contains(generateKey(entity))) {
+ if (!availableHostNames.isEmpty() && !availableHostNames.contains(generatePersistKey(entity))) {
entitiesForDeletion.add(entity);
}
}
@@ -105,11 +104,11 @@
private void filterEntitiesToWrite(TopologyEntityParserResult result, Set<String> availableHostnames, List<TopologyBaseAPIEntity> entitiesToWrite) {
if (!result.getSlaveNodes().isEmpty()) {
for (TopologyBaseAPIEntity entity : result.getMasterNodes()) {
- availableHostnames.add(generateKey(entity));
+ availableHostnames.add(generatePersistKey(entity));
entitiesToWrite.add(entity);
}
for (TopologyBaseAPIEntity entity : result.getSlaveNodes()) {
- availableHostnames.add(generateKey(entity));
+ availableHostnames.add(generatePersistKey(entity));
entitiesToWrite.add(entity);
}
} else {
@@ -156,10 +155,11 @@
entities.clear();
}
- private String generateKey(TopologyBaseAPIEntity entity) {
+ private String generatePersistKey(TopologyBaseAPIEntity entity) {
return new HashCodeBuilder().append(entity.getTags().get(TopologyConstants.SITE_TAG))
.append(entity.getTags().get(TopologyConstants.HOSTNAME_TAG))
.append(entity.getTags().get(TopologyConstants.ROLE_TAG))
+ .append(entity.getTags().get(TopologyConstants.RACK_TAG))
.build().toString();
}
diff --git a/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/utils/EntityBuilderHelper.java b/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/utils/EntityBuilderHelper.java
index 8aa1d88..5654c6f 100644
--- a/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/utils/EntityBuilderHelper.java
+++ b/eagle-topology-check/eagle-topology-app/src/main/java/org/apache/eagle/topology/utils/EntityBuilderHelper.java
@@ -65,7 +65,7 @@
return key.indexOf(TopologyConstants.COLON) > 0 ? key.substring(0, key.indexOf(TopologyConstants.COLON)) : key;
}
- public static String generateKey(TopologyBaseAPIEntity entity) {
+ public static String generateHostKey(TopologyBaseAPIEntity entity) {
return new HashCodeBuilder().append(entity.getTags().get(TopologyConstants.SITE_TAG))
.append(entity.getTags().get(TopologyConstants.HOSTNAME_TAG))
.append(entity.getTags().get(TopologyConstants.ROLE_TAG))