Description
Ok ... this is a weird one ...
SOLR-13593 modified FieldTypePluginLoader to add the ability for analysis Factories to be resolved by SPI name (ex: name="stop", instead of by "short class name" (ex: class="solr.StopFilterFactory".
The code that deals with this just calls (for example) TokenFilterFactory.forName(name, params); and uses the resulting factory "as is" – But these means that nothing calls the inform(ResourceLoader) on any factories that implement ResourceLoaderAware (such as StopFilterFactory or SynonymGraphFilterFactory)
In the "short class name" code path (the only option prior to 9.0), the SolrResourceLoader is used to initialize the Factory, and SolrResourceLoader..newInstance(...) takes responsibility of calling factory.inform(this) on everything it instantiates that implements ResourceLoaderAware (as well as some other checks: like SolrCoreAware)
This discrepancy means that when using the name="foo" syntax, many factories won't be fully initialized – or fail on invalid input – during schema initialization. In the case of things like StopFilterFactory or SynonymGraphFilterFactory) the problem will manifest as some type of runtime error when the factory's create(...) method is called as part of creating a new index or query Analyzer.
...BUT...
This problem only seems to manifest itself when using ClassicIndexSchemaFactory – which is why it's not readily apparent when using the default configset, or something like bin/solr -e techproducts (but is trivial to reproduce in testcases (since almost every "test" solrconfig uses ClassicIndexSchemaFactory)
I have no idea why using ManagedIndexSchemaFactory doesn't manifest the same problem – it should be using the same FieldTypePluginLoader under the covers – but clearly something specific to ManagedIndexSchema is taking responsibility for calling ResourceLoaderAware.inform(...)
Attachments
Attachments
Issue Links
- is caused by
-
SOLR-13593 Allow to look-up analyzer components by their SPI names in field type configuration
- Closed
- is related to
-
SOLR-16998 Adopt JSR-330 dependency injection
- Open
- links to
- mentioned in
-
Page Loading...