I am not sure I understand the deeper point of the question, but just
in terms of files
*) Per core: solrconfig.xml can get overridden with config-api and the
overrides go into configoverlay.json
*) Per core: core.properties can store some configurations values that
are used in variable substitutions
*) Per solr.xml: solrcore.properties:
https://lucene.apache.org/solr/guide/6_6/configuring-solrconfig-xml.html#Configuringsolrconfig.xml-solrcore.properties
(never used it myself, apparently deprecated, standalone only)

Regards,
   Alex.

On Fri, 28 Aug 2020 at 07:59, Ilan Ginzburg <ilans...@gmail.com> wrote:
>
> I want to ramp-up/discuss/inventory configuration options in Solr. Here's my 
> understanding of what exists and what could/should be used depending on the 
> need. Please correct/complete as needed (or point to documentation I might 
> have missed).
>
> There are currently 3 sources of general configuration I'm aware of:
>
> Collection specific config bootstrapped by file solrconfig.xml and copied 
> into the initial (_default) then subsequent Config Sets in Zookeeper.
> Cluster wide config in Zookeeper /clusterprops.json editable globally through 
> Zookeeper interaction using an API. Not bootstrapped by anything (i.e. does 
> not exist until the user explicitly creates it)
> Node config file solr.xml deployed with Solr on each node and loaded when 
> Solr starts. Changes to this file are per node and require node restart to be 
> taken into account.
>
> The Collection specific config (file solrconfig.xml then in Zookeeper 
> /configs/<config set name>/solrconfig.xml) allows Solr devs to set reasonable 
> defaults (the file is part of the Solr distribution). Content can be changed 
> by users as they create new Config Sets persisted in Zookeeper.
>
> Zookeeper's /clusterprops.json can be edited through the collection admin API 
> CLUSTERPROP. If users do not set anything there, the file doesn't even exist 
> in Zookeeper therefore `Solr devs cannot use it to set a default cluster 
> config, there's no clusterprops.json file in the Solr distrib like there's a 
> solrconfig.xml.
>
> File solr.xml is used by Solr devs to set some reasonable default 
> configuration (parametrized through property files or system properties). 
> There's no API to change that file, users would have to edit/redeploy the 
> file on each node and restart the Solr JVM on that node for the new config to 
> be taken into account.
>
> Based on the above, my vision (or mental model) of what to use depending on 
> the need:
>
> solrconfig.xml is the only per collection config. IMO it does its job 
> correctly: Solr devs can set defaults, users tailor the content to what they 
> need for new config sets. It's the only option for per collection config 
> anyway.
>
> The real hesitation could be between solr.xml and Zookeeper 
> /clusterprops.json. What should go where?
>
> For user configs (anything the user does to the Solr cluster AFTER it was 
> deployed and started), /clusterprops.json seems to be the obvious choice and 
> offers the right abstractions (global config, no need to worry about 
> individual nodes, all nodes pick up configs and changes to configs 
> dynamically).
>
> For configs that need to be available without requiring user intervention or 
> needed before the connection to ZK is established, there's currently no other 
> choice than using solr.xml. Such configuration obviously include parameters 
> that are needed to connect to ZK (timeouts, credential provider and hopefully 
> one day an option to either use direct ZK interaction code or Curator code), 
> but also configuration of general features that should be the default without 
> requiring users to opt in yet allowing then to easily opt out by editing 
> solr.xml before deploying to their cluster (in the future, this could include 
> which Lucene version to load in Solr for example).
>
> To summarize:
>
> Collection specific config? --> solrconfig.xml
> User provided cluster config once SolrCloud is running? --> ZK 
> /clusterprops.json
> Solr dev provided cluster config? --> solr.xml
>
>
> Going forward, some (but only some!) of the config that currently can only 
> live in solr.xml could be made to go to /clusterprops.json or another ZK 
> based config file. This would require adding code to create that ZK file upon 
> initial cluster start (to not force the user to push it) and devise a 
> mechanism (likely a script, could be tricky though) to update that file in ZK 
> when a new release of Solr is deployed and a previous version of that file 
> already exists. Not impossible tasks, but not trivial ones either. Whatever 
> the needs of such an approach are, it might be easier to keep the existing 
> solr.xml as a file and allow users to define overrides in Zookeeper for the 
> configuration parameters from solr.xml that make sense to be overridden in ZK 
> (obviously ZK credentials or connection timeout do not make sense in that 
> context, but defining the shard handler implementation class does since it is 
> likely loaded after a node managed to connect to ZK).
>
> Some config will have to stay in a local Node file system file and only there 
> no matter what: Zookeeper timeout definition or any node configuration that 
> is needed before the node connects to Zookeeper.
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to