janhoy commented on code in PR #1089:
URL: https://github.com/apache/solr/pull/1089#discussion_r1001629307
##########
solr/core/src/java/org/apache/solr/cloud/api/collections/Assign.java:
##########
@@ -562,8 +566,36 @@ public static AssignStrategy
createAssignStrategy(CoreContainer coreContainer) {
coreContainer.getPlacementPluginFactory().createPluginInstance();
if (placementPlugin == null) {
// Otherwise use the default
- // TODO: Replace this with a better options, such as the
AffinityPlacementFactory
- placementPlugin = (new SimplePlacementFactory()).createPluginInstance();
+ String defaultPluginId =
System.getProperty(DEFAULT_PLACEMENT_PLUGIN_SYSPROP);
+ if (defaultPluginId != null) {
+ switch (defaultPluginId.toLowerCase(Locale.ROOT)) {
+ case "simple":
+ placementPlugin = (new
SimplePlacementFactory()).createPluginInstance();
+ break;
+ case "affinity":
+ placementPlugin = (new
AffinityPlacementFactory()).createPluginInstance();
+ break;
+ case "minimizecores":
+ placementPlugin = (new
MinimizeCoresPlacementFactory()).createPluginInstance();
+ break;
+ case "random":
+ placementPlugin = (new
RandomPlacementFactory()).createPluginInstance();
+ break;
+ default:
+ throw new SolrException(
+ SolrException.ErrorCode.SERVER_ERROR,
+ "Invalid value for system property '"
+ + DEFAULT_PLACEMENT_PLUGIN_SYSPROP
+ + "'. Supported values are 'simple', 'random', 'affinity'
and 'minimizecores'");
+ }
+ log.info(
+ "Default replica placement plugin set in {} to {}",
+ DEFAULT_PLACEMENT_PLUGIN_SYSPROP,
+ defaultPluginId);
+ } else {
+ // TODO: Replace this with a better options, such as the
AffinityPlacementFactory
+ placementPlugin = (new
SimplePlacementFactory()).createPluginInstance();
+ }
}
return new PlacementPluginAssignStrategy(placementPlugin);
Review Comment:
The keyword here is "default". This mechanism is only to set the default
plugin. Say you are a platform owner provisioning a Solr cluster for your
teams. You set all kind of defaults, like RAM etc, and one of those settings
would be the placement policy. Once the teams start using the cluster, they may
reconfigure Solr in any way that fits them, thus overriding the pre-packaged
defaults.
If we had another mechanism for statically provisioning `/clusterprops.json`
we'd likely not have this discussion. Imagine Solr looking for a
`$SOLR_HOME/bootstrap/clusterprops.json` at startup, and uploading it to ZK if
and only if the file in ZK is empty/blank.
--
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.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]