You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Hoss Man (JIRA)" <ji...@apache.org> on 2014/12/20 01:51:14 UTC

[jira] [Updated] (SOLR-6643) Core load silently aborted if missing schema has depenencies - LinkageErrors swollowed

     [ https://issues.apache.org/jira/browse/SOLR-6643?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Hoss Man updated SOLR-6643:
---------------------------
    Summary: Core load silently aborted if missing schema has depenencies - LinkageErrors swollowed  (was: Core load silently aborted if missing depenencies)

I was able to reproduce Jan's steps, and then while trying again using core CREATE instead of relying on startup, was able to get an error returned to the client indicating the root cause of the problem...

{noformat}
java.lang.NoClassDefFoundError: com/ibm/icu/text/BreakIterator
	at java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.lang.Class.privateGetDeclaredConstructors(Class.java:2663)
	at java.lang.Class.getConstructor0(Class.java:3067)
	at java.lang.Class.getConstructor(Class.java:1817)
	at org.apache.solr.core.SolrResourceLoader.newInstance(SolrResourceLoader.java:604)
	at org.apache.solr.schema.FieldTypePluginLoader$2.create(FieldTypePluginLoader.java:333)
	at org.apache.solr.schema.FieldTypePluginLoader$2.create(FieldTypePluginLoader.java:326)
	at org.apache.solr.util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:151)
{noformat}

...which kind of makes sense: nothing in the plugin architetcure does much in the way of "catching" LinkageError's like NoClassDefFoundError because in general trying ot catch Error's is usually a bad idea.

i think however that it would make sense for SolrResourceLoader to at least catch+log+rethrow any error from newInstance

that still leaves a second question however: the NoClassDefFoundError should (currently) be bubbling all the way up to the CoreContainer which should then be recording it as an init failure for the core -- but that isn't happening.  why?

based on my testing, if a java.lang.Error is thrown during init of something like RequestHandler, then that gets properly tracked as a coreInitFailure -- but if something from the schema (ie: FieldType) throws a j.l.Error, that gets swallowed up.


> Core load silently aborted if missing schema has depenencies - LinkageErrors swollowed
> --------------------------------------------------------------------------------------
>
>                 Key: SOLR-6643
>                 URL: https://issues.apache.org/jira/browse/SOLR-6643
>             Project: Solr
>          Issue Type: Bug
>          Components: Schema and Analysis
>    Affects Versions: 4.10.1
>            Reporter: Jan Høydahl
>            Priority: Minor
>              Labels: logging
>
> *How to reproduce*
> # Start with standard collection1 config
> # Add a field type to schema using the ICU contrib, no need for a field
> {code:XML}
> <fieldType name="text_icu" class="solr.TextField">
>   <analyzer><tokenizer class="solr.ICUTokenizerFactory"/></analyzer>
> </fieldType>
> {code}
> # {{cd example}}
> # {{mkdir solr/lib}}
> # {{cp ../contrib/analysis-extras/lucene-libs/lucene-analyzers-icu-4.10.1.jar solr/lib/}}
> # {{bin/solr -f}}
> # Core is not loaded, and no messages in log after this line
> {code}
> ... INFO  org.apache.solr.schema.IndexSchema  – [collection1] Schema name=example
> {code}
> Note that we did *not* add the dependency libs from {{analysis-extras/lib}}, so we'd expect a {{ClassNotFoundException}}, but some way the initialization of schema aborts silently. The ICUTokenizerFactory is instansiated by reflection and I suspect that some exception is swallowed in {{AbstractPluginLoader#create()}}



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

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org