Ethanlm commented on a change in pull request #3215: Storm3585 - New compact
Constraint config including maxNodeCoLocationCnt and incompatibleComponents
URL: https://github.com/apache/storm/pull/3215#discussion_r388516704
##########
File path:
storm-server/src/test/java/org/apache/storm/scheduler/resource/strategies/scheduling/TestConstraintSolverStrategy.java
##########
@@ -85,6 +132,80 @@
return config;
}
+ /**
+ * Set Config.TOPOLOGY_RAS_CONSTRAINTS (when consolidatedConfigFlag is
true) or both
+ * Config.TOPOLOGY_RAS_CONSTRAINTS/Config.TOPOLOGY_SPREAD_COMPONENTS (when
consolidatedConfigFlag is false).
+ *
+ * When consolidatedConfigFlag when true, use the new more consolidated
format to set Config.TOPOLOGY_RAS_CONSTRAINTS.
+ * When false, use the old configuration format for
Config.TOPOLOGY_RAS_CONSTRAINTS/TOPOLOGY_SPREAD_COMPONENTS.
+ *
+ * @param constraints List of components, where the first one cannot
co-exist with the others in the list
+ * @param spreads Map of component and its maxCoLocationCnt
+ * @param config Configuration to be updated
+ */
+ private void setConstraintConfig(List<List<String>> constraints,
Map<String, Integer> spreads, Map<String, Object> config) {
+ if (consolidatedConfigFlag) {
+ // single configuration for each component
+ Map<String, Map<String,Object>> modifiedConstraints = new
HashMap<>();
+ for (List<String> constraint: constraints) {
+ if (constraint.size() < 2) {
+ continue;
+ }
+ String comp = constraint.get(0);
+ List<String> others = constraint.subList(1, constraint.size());
+ List<Object> incompatibleComponents =
(List<Object>)modifiedConstraints.computeIfAbsent(comp, k -> new
HashMap<String,Object>())
+
.computeIfAbsent(ConstraintSolverStrategy.CONSTRAINT_TYPE_INCOMPATIBLE_COMPONENTS,
k -> new ArrayList<Object>());
+ incompatibleComponents.addAll(others);
+ }
+ for (String comp: spreads.keySet()) {
+ modifiedConstraints.computeIfAbsent(comp, k -> new
HashMap<String,Object>()).put(ConstraintSolverStrategy.CONSTRAINT_TYPE_MAX_NODE_CO_LOCATION_CNT,
""+spreads.get(comp));
Review comment:
`String,Object` can be removed; `""+` doesn't seem necessary
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services