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

Noble Paul commented on SOLR-7073:
----------------------------------

Thanks for the comments

bq.I don't like that delete-runtimelib has just the name and not a json body. 
In future if we want to delete old versions of jars, 

There is one an only one version of a given jar that you can add to a 
collection. So, you can either delete or update

bq.Minor typos in JarRepository - s/decerease/decrease and 
s/getSytemCollReplica/getSystemCollReplica.

sure

bq.We should check for liveness as well inside getSystemCollReplica

sure

bq.RecoveryStrategy has some code commented out. Is it not necessary anymore?

We no more have those Lazy Wrappers . What we have is {{LazyPluginHolder}} . 
When you do a {{get()}} for a plugin, you get a live instance. fully 
instantiated

 bq.The patch removes the disableExternalLib flag from RequestHandlers. Is that 
not needed anymore?
That is moved to {{PluginRegistry}} where it assumes a new name 
{{enable.runtime.lib}}

bq.Can we please rename SolrConfig.clsVsInfo to classVsInfo? and LazyRHHolder 
to LazyRequestHandlerHolder?

sure

bq.Why is LazyRHHolder required? 

It was required because of the feature we released in 5.0 for a per request 
handler classloader. I'm going to remove that

bq.RequestHandlers.initHandlersFromConfig used to call init on the handlers. I 
can't find where they are being initialized now. 

It all goes into {{PluginsRegistry}} . Initialization is done inside there


> Add an API to add a jar to a collection's classpath
> ---------------------------------------------------
>
>                 Key: SOLR-7073
>                 URL: https://issues.apache.org/jira/browse/SOLR-7073
>             Project: Solr
>          Issue Type: Sub-task
>            Reporter: Noble Paul
>            Assignee: Noble Paul
>         Attachments: SOLR-7073.patch, SOLR-7073.patch, SOLR-7073.patch
>
>
> The idea of having separate classloaders for each component may be counter 
> productive.  This aims to add a jar dependency to the collection itself and 
> each core belonging to that collection will have the jar in the classpath
> As we load everything from the .system collection , we cannot make the core 
> loading delayed till .system is fully loaded and is available . 
> There is a new  set of  config commands to manage the dependencies on a 
> collection level. It is possible to have more than one jar as a dependency. 
> The "lib" attribute is same as the blob name that we use in the blob store API
> example:
> {code}
> curl http://localhost:8983/solr/collection1/config -H 
> 'Content-type:application/json'  -d '{
> "add-runtimelib" : {"name": "jarname" , "version":2 },
> "update-runtimelib" :{"name": "jarname" ,"version":3},
> "delete-runtimelib" :"jarname" 
> }' 
> {code}
> The same is added to the overlay.json .
> The default SolrResourceLoader does not have visibility to  these jars . 
> There is a classloader that can access these jars which is made available 
> only to those components which are specially annotated
> Every pluggable component can have an optional extra attribute called 
> {{runtimeLib=true}}, which means, these components are not be loaded at core 
> load time. They are tried to be loaded on demand and if all the dependency 
> jars are not available at the component load time an error is thrown . 
> example of registering a valueSourceParser which depends on the runtime 
> classloader
> {code}
> curl http://localhost:8983/solr/collection1/config -H 
> 'Content-type:application/json'  -d '{
> "create-valuesourceparser" : {"name": "nvl" ,
> "runtimeLib": true, 
> "class":"solr.org.apache.solr.search.function.NvlValueSourceParser , 
> "nvlFloatValue":0.0 }  
> }'
> {code} 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to