[
https://issues.apache.org/jira/browse/SOLR-7073?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14349158#comment-14349158
]
Shalin Shekhar Mangar commented on SOLR-7073:
---------------------------------------------
Thanks Noble. Some comments:
# 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, how do we do that? Would it
delete all versions? We should keep it consistent and have a json object as the
value.
# Minor typos in JarRepository - s/decerease/decrease and
s/getSytemCollReplica/getSystemCollReplica.
# We should check for liveness as well inside getSystemCollReplica
# RecoveryStrategy has some code commented out. Is it not necessary anymore?
{code}
/*if (handler instanceof LazyRequestHandlerWrapper) {
handler = ((LazyRequestHandlerWrapper) handler).getWrappedHandler();
}*/
{code}
# The patch removes the disableExternalLib flag from RequestHandlers. Is that
not needed anymore?
# Can we please rename SolrConfig.clsVsInfo to classVsInfo? and LazyRHHolder to
LazyRequestHandlerHolder?
# Why is LazyRHHolder required? There are other plugins which can be loaded
from runtimeLib then what is special about request handlers to deserve their
own class. Also LazyRHHolder asserts that the "lib" tag must also have
"version" but other lazy plugins don't?
# A request handler loaded from runtimeLib is initialized from LazyRHHolder but
a lazy handler loaded from regular jars is loaded via LazyPluginHolder? This is
really confusing. Please consider better names for these class so that their
purpose is clear. Some javadocs/comments won't hurt.
# RequestHandlers.initHandlersFromConfig used to call init on the handlers. I
can't find where they are being initialized now.
> 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]