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_r388522827
##########
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));
+ }
+ config.put(Config.TOPOLOGY_RAS_CONSTRAINTS, modifiedConstraints);
+ } else {
+ // constraint and MaxCoLocationCnts are separate - no
maxCoLocationCnt implied as 1
+ config.put(Config.TOPOLOGY_RAS_CONSTRAINTS, constraints);
+ config.put(Config.TOPOLOGY_SPREAD_COMPONENTS,
spreads.entrySet().stream().map(e -> Arrays.asList()));
+ }
+ }
+
+ /**
+ * Set Config.TOPOLOGY_RAS_CONSTRAINTS (when consolidated is true) or both
+ * Config.TOPOLOGY_RAS_CONSTRAINTS/Config.TOPOLOGY_SPREAD_COMPONENTS (when
consolidated 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 List of components that can have only one Executor on a
node (i.e. their maxCoLocationCnt = 1)
+ * @param config Configuration to be updated
+ */
+ private void setConstraintConfig(List<List<String>> constraints,
List<String> spreads, Map<String, Object> config) {
Review comment:
This method is not used by anyone and can be removed
----------------------------------------------------------------
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