[ 
https://issues.apache.org/jira/browse/SOLR-15782?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17783649#comment-17783649
 ] 

Vincent Primault commented on SOLR-15782:
-----------------------------------------

[~dsmiley] I explored a bit what it would mean to have more structured plugin 
declarations in 
[solr.xml|https://solr.apache.org/guide/solr/latest/configuration-guide/cluster-plugins.html#plugin-types].
 As per documentation, we have 5 different types of plugins today: placement 
plugins, cluster event producers, cluster event listeners, cluster singletons 
and request handlers. We could imagine having structured configuration for them 
in solr.xml like this:

{code:xml}
<placementPlugin 
class="org.apache.solr.cluster.placement.plugins.AffinityPlacementFactory">
  <int name="minimalFreeDiskGB">20</int>
</placementPlugin>
<clusterEventProducer 
class="org.apache.solr.cluster.events.impl.DefaultClusterEventProducer"/>
<clusterEventListener name="collections-repair-listener" 
class="org.apache.solr.cluster.events.impl.CollectionsRepairEventListener"/>
{code}

It would be more inline with what we have today in solr.xml, instead of having 
a generic `<plugin/>` stanza as in the initial PR attached to this ticket.

However, the implementation for this is far from simple, and I could not find a 
way to implement this in a generic manner, given that
1/ The manner of configuring container plugins and cluster plugins is very 
different. The former implement NamedListInitializedPlugin and a NamedList, 
while the latter implement ConfigurablePlugin and accept a POJO (usually 
deserialized from JSON). We may be able reconcile both, but it does not seem 
trivial.
2/ Every plugin type enumerated above is then instantiated in a very ad-hoc 
manner. Every such plugin declared in solr.xml would very likely require an 
ad-hoc change to NodeConfig, and then ad-hoc changes in CoreContainer to use it.

I hence feel a bit torn apart. On the one hand a structured config in solr.xml 
sure looks better and more aligned with what already exists. One the other hand 
unifying both is a very large change that I'm not sure I have enough bandwidth 
to undertake right now. The proposal of having a generic `<plugin />` (or 
whatever his name is) that maps almost 1:1 with the cluster plugins API seems 
the most reasonable to me in the short term. And it should not prevent us from 
moving to a more elaborate configuration API later, while keeping this one.

> Configure custom node/container handlers in solr.xml
> ----------------------------------------------------
>
>                 Key: SOLR-15782
>                 URL: https://issues.apache.org/jira/browse/SOLR-15782
>             Project: Solr
>          Issue Type: Improvement
>            Reporter: David Smiley
>            Priority: Major
>          Time Spent: 2.5h
>  Remaining Estimate: 0h
>
> Since Solr 8.6 via SOLR-14404, it's been possible to define custom 
> node/CoreContainer request handlers.  However, the current mechanism requires 
> the use of cluster properties (in ZooKeeper).  That allows for dynamic 
> registration (cool) but it's awkward to pre-define them – it doesn't comply 
> with an [immutable 
> infrastructure|https://www.bmc.com/blogs/immutable-infrastructure/] philosphy 
> where node handlers can be defined by configuration local to the Solr node.  
> That's solr.xml.  So here, I propose that node handlers be defined there, 
> perhaps the same as is done in solrconfig.xml.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to