You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@solr.apache.org by "Michael Gibney (Jira)" <ji...@apache.org> on 2022/06/01 00:21:00 UTC

[jira] [Commented] (SOLR-16219) ICUCollationField tried to access protected field org.apache.solr.schema.IndexSchema.luceneVersion

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

Michael Gibney commented on SOLR-16219:
---------------------------------------

I have an integration test for this, and a fix (no PR yet, but soon). It's worth noting that exactly the same issue arose with the AnalyticsComponent (fixed in SOLR-13643).

Is there a more general way that we could prevent this kind of thing from happening in the future? This is a problem for any part of the code that gets packaged/deployed as separate jar files (outside of WEB-INF). In practice iiuc it's a concern only for classes that declare themselves in a package that already exists in core or solrj -- and there aren't that many contrib/modules (currently) that do that (most are scoped to new/special packages). I'm really curious if anyone has any ideas, e.g., of how to have class loading in unit tests be more closely analogous to what one would see in a production environment. Or should we proceed with a "just don't do that, and try to be vigilant in code reviews" approach?

> ICUCollationField tried to access protected field org.apache.solr.schema.IndexSchema.luceneVersion
> --------------------------------------------------------------------------------------------------
>
>                 Key: SOLR-16219
>                 URL: https://issues.apache.org/jira/browse/SOLR-16219
>             Project: Solr
>          Issue Type: Bug
>      Security Level: Public(Default Security Level. Issues are Public) 
>    Affects Versions: 9.0
>            Reporter: Roman
>            Priority: Major
>
> I've tried to recreate Solr 8 configuration in Solr 9, but the following part in the config causes an error when creating core. (not SolrCould environment, if it matters)
> {code:java}
> <fieldType name="text_gen_sort" class="solr.ICUCollationField" locale="" 
> numeric="true" strength="primary" multiValued="true" />{code}
> The following paths has been added in the {{{}solrconfig.xml{}}}:
> {code:java}
> <lib path="..../solr/modules/analysis-extras/lib/solr-analysis-extras-9.0.0.jar" />
> <lib path="..../solr/modules/analysis-extras/lib/icu4j-68.2.jar" />
> <lib path="..../solr/modules/analysis-extras/lib/lucene-analysis-icu-9.0.0.jar" />{code}
> and I checked, that the paths to jars are correct.
> The stack trace is lengthy, here the relevant part of it:
> {code:java}
> <h3>Caused by:</h3><pre>java.lang.IllegalAccessError: 
> class org.apache.solr.schema.ICUCollationField tried to access
> protected field org.apache.solr.schema.IndexSchema.luceneVersion
> (org.apache.solr.schema.ICUCollationField is in
> unnamed module of loader java.net.FactoryURLClassLoader @61639b88;
> org.apache.solr.schema.IndexSchema is in unnamed module of loader
> org.eclipse.jetty.webapp.WebAppClassLoader @6a988392)
> at org.apache.solr.schema.ICUCollationField.init(ICUCollationField.java:128)
> at org.apache.solr.schema.FieldType.setArgs(FieldType.java:202)
> at org.apache.solr.schema.FieldTypePluginLoader.init(FieldTypePluginLoader.java:149)
> at org.apache.solr.schema.FieldTypePluginLoader.init(FieldTypePluginLoader.java:43)
> at org.apache.solr.util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:189)
> at org.apache.solr.schema.IndexSchema.readSchema(IndexSchema.java:531)
> at org.apache.solr.schema.IndexSchema.<init>(IndexSchema.java:188)
> at org.apache.solr.schema.ManagedIndexSchema.<init>(ManagedIndexSchema.java:119)
> at org.apache.solr.schema.ManagedIndexSchemaFactory.create(ManagedIndexSchemaFactory.java:279)
> at org.apache.solr.schema.ManagedIndexSchemaFactory.create(ManagedIndexSchemaFactory.java:51)
> at org.apache.solr.core.ConfigSetService.createIndexSchema(ConfigSetService.java:342)
> at org.apache.solr.core.ConfigSetService.lambda$loadConfigSet$0(ConfigSetService.java:253)
> at org.apache.solr.core.ConfigSet.<init>(ConfigSet.java:49)
> at org.apache.solr.core.ConfigSetService.loadConfigSet(ConfigSetService.java:249)
> at org.apache.solr.core.CoreContainer.createFromDescriptor(CoreContainer.java:1550)
> at org.apache.solr.core.CoreContainer.create(CoreContainer.java:1426)
> at org.apache.solr.handler.admin.CoreAdminOperation.lambda$static$0(CoreAdminOperation.java:92){code}
> Previous configuration with the same 3 libraries and the field type worked. I used {{{}bin/solr create_core -c my_core -d my_configset{}}}. The change is in the {{{}managed-schema.xml{}}}. (It used to be just {{manages-schema}} in Solr 8, but I recreated the configuration from the new default.)
> This looks to me like some kind of a bug. What can be the cause of this and how to overcome the problem?
> (I've also created SO question on this - [https://stackoverflow.com/questions/72416721/how-to-configure-icucollationfield-type-in-solr-9] )
>  
> To recreate, just add the above mentioned parts to solrconfig.xml and managed-schema.xml (from _default ) and try to create a core using the configset.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

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