You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Tod Olson <to...@uchicago.edu> on 2017/12/15 21:16:08 UTC
Debugging custom RequestHander: spinning up a core for debugging
Hi everyone,
I need to do some step-wise debugging on a custom RequestHandler. I'm trying to spin up a core in a Junit test, with the idea of running it inside of Eclipse for debugging. (If there's an easier way, I'd like to see a walk through!) Problem is the core fails to spin up with:
java.io.IOException: Break Iterator Rule Data Magic Number Incorrect, or unsupported data version
Here's the code, just trying to load (cribbed and adapted from https://stackoverflow.com/questions/45506381/how-to-debug-solr-plugin):
public class BrowseHandlerTest
{
private static CoreContainer container;
private static SolrCore core;
private static final Logger logger = Logger.getGlobal();
@BeforeClass
public static void prepareClass() throws Exception
{
String solrHomeProp = "solr.solr.home";
System.out.println(solrHomeProp + "= " + System.getProperty(solrHomeProp));
// create the core container from the solr.solr.home system property
container = new CoreContainer();
container.load();
core = container.getCore("biblio");
logger.info<http://logger.info>("Solr core loaded!");
}
@AfterClass
public static void cleanUpClass()
{
core.close();
container.shutdown();
logger.info<http://logger.info>("Solr core shut down!");
}
}
The test, run through ant, fails as follows:
[junit] solr.solr.home= /Users/tod/src/vufind/solr/vufind
[junit] SLF4J: Defaulting to no-operation (NOP) logger implementation
[junit] SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[junit] SLF4J: Failed to load class "org.slf4j.impl.StaticMDCBinder".
[junit] SLF4J: Defaulting to no-operation MDCAdapter implementation.
[junit] SLF4J: See http://www.slf4j.org/codes.html#no_static_mdc_binder for further details.
[junit] Tests run: 0, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 1.299 sec
[junit]
[junit] ------------- Standard Error -----------------
[junit] SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
[junit] SLF4J: Defaulting to no-operation (NOP) logger implementation
[junit] SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[junit] SLF4J: Failed to load class "org.slf4j.impl.StaticMDCBinder".
[junit] SLF4J: Defaulting to no-operation MDCAdapter implementation.
[junit] SLF4J: See http://www.slf4j.org/codes.html#no_static_mdc_binder for further details.
[junit] ------------- ---------------- ---------------
[junit] Testcase: org.vufind.solr.handler.tests.BrowseHandlerTest: Caused an ERROR
[junit] SolrCore 'biblio' is not available due to init failure: JVM Error creating core [biblio]: null
[junit] org.apache.solr.common.SolrException: SolrCore 'biblio' is not available due to init failure: JVM Error creating core [biblio]: null
[junit] at org.apache.solr.core.CoreContainer.getCore(CoreContainer.java:1066)
[junit] at org.vufind.solr.handler.tests.BrowseHandlerTest.prepareClass(BrowseHandlerTest.java:45)
[junit] Caused by: org.apache.solr.common.SolrException: JVM Error creating core [biblio]: null
[junit] at org.apache.solr.core.CoreContainer.create(CoreContainer.java:833)
[junit] at org.apache.solr.core.CoreContainer.access$000(CoreContainer.java:87)
[junit] at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:467)
[junit] at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:458)
[junit] at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[junit] at org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor$1.run(ExecutorUtil.java:231)
[junit] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[junit] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[junit] at java.lang.Thread.run(Thread.java:745)
[junit] Caused by: java.lang.ExceptionInInitializerError
[junit] at org.apache.lucene.analysis.icu.segmentation.ICUTokenizerFactory.inform(ICUTokenizerFactory.java:107)
[junit] at org.apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.java:721)
[junit] at org.apache.solr.schema.IndexSchema.<init>(IndexSchema.java:160)
[junit] at org.apache.solr.schema.IndexSchemaFactory.create(IndexSchemaFactory.java:56)
[junit] at org.apache.solr.schema.IndexSchemaFactory.buildIndexSchema(IndexSchemaFactory.java:70)
[junit] at org.apache.solr.core.ConfigSetService.createIndexSchema(ConfigSetService.java:108)
[junit] at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:79)
[junit] at org.apache.solr.core.CoreContainer.create(CoreContainer.java:812)
[junit] Caused by: java.lang.RuntimeException: java.io.IOException: Break Iterator Rule Data Magic Number Incorrect, or unsupported data version.
[junit] at org.apache.lucene.analysis.icu.segmentation.DefaultICUTokenizerConfig.readBreakIterator(DefaultICUTokenizerConfig.java:125)
[junit] at org.apache.lucene.analysis.icu.segmentation.DefaultICUTokenizerConfig.<clinit>(DefaultICUTokenizerConfig.java:66)
[junit] Caused by: java.io.IOException: Break Iterator Rule Data Magic Number Incorrect, or unsupported data version.
[junit] at com.ibm.icu.text.RBBIDataWrapper.get(RBBIDataWrapper.java:193)
[junit] at com.ibm.icu.text.RuleBasedBreakIterator.getInstanceFromCompiledRules(RuleBasedBreakIterator.java:57)
[junit] at org.apache.lucene.analysis.icu.segmentation.DefaultICUTokenizerConfig.readBreakIterator(DefaultICUTokenizerConfig.java:120)
[junit]
[junit]
[junit] Testcase: org.vufind.solr.handler.tests.BrowseHandlerTest: Caused an ERROR
[junit] null
[junit] java.lang.NullPointerException
[junit] at org.vufind.solr.handler.tests.BrowseHandlerTest.cleanUpClass(BrowseHandlerTest.java:52)
[junit]
[junit]
[junit] Test org.vufind.solr.handler.tests.BrowseHandlerTest FAILED
This is the directory structure:
.../solr/vufind/
authority/
conf/
core.properties
biblio/
conf/
core.properties
index/
solr.xml
The solr.solr.home property is set to the solr/vufind directory, and I need to load the biblio core. I don't get to dig into code very often, so my Java and IDE skills are a bit rusty.
Any advice is welcome, whether how to fix or an alternate approach.
Best,
-Tod
Tod Olson <to...@uchicago.edu>>
Systems Librarian
Interim Director for Integrated Library Systems
University of Chicago Library
Re: Debugging custom RequestHander: spinning up a core for debugging
Posted by Tod Olson <to...@uchicago.edu>.
Thanks, that pointed me in the right direction! The problem was an ancient ICU library in the distributed code.
-Tod
On Dec 15, 2017, at 5:15 PM, Erick Erickson <er...@gmail.com>> wrote:
My guess is this isn't a Solr issue at all; you are somehow using an old Java.
RBBIDataWrapper is from
com.ibm.icu.text;
I saw on a quick Google that this was cured by re-installing Eclipse,
but that was from 5 years ago.
You say your Java and IDE skills are a bit rusty, maybe you haven't
updated your Java JDK or Eclipse in a while? I don't know if Eclipse
somehow has its own Java (I haven't used Eclipse for quite a while).
I take it this runs outside Eclipse OK? (well, with problems otherwise
you wouldn't be stepping through it.....)
Best,
Erick
On Fri, Dec 15, 2017 at 1:16 PM, Tod Olson <to...@uchicago.edu>> wrote:
Hi everyone,
I need to do some step-wise debugging on a custom RequestHandler. I'm trying to spin up a core in a Junit test, with the idea of running it inside of Eclipse for debugging. (If there's an easier way, I'd like to see a walk through!) Problem is the core fails to spin up with:
java.io.IOException: Break Iterator Rule Data Magic Number Incorrect, or unsupported data version
Here's the code, just trying to load (cribbed and adapted from https://stackoverflow.com/questions/45506381/how-to-debug-solr-plugin):
public class BrowseHandlerTest
{
private static CoreContainer container;
private static SolrCore core;
private static final Logger logger = Logger.getGlobal();
@BeforeClass
public static void prepareClass() throws Exception
{
String solrHomeProp = "solr.solr.home";
System.out.println(solrHomeProp + "= " + System.getProperty(solrHomeProp));
// create the core container from the solr.solr.home system property
container = new CoreContainer();
container.load();
core = container.getCore("biblio");
logger.info<http://logger.info/><http://logger.info<http://logger.info/>>("Solr core loaded!");
}
@AfterClass
public static void cleanUpClass()
{
core.close();
container.shutdown();
logger.info<http://logger.info/><http://logger.info<http://logger.info/>>("Solr core shut down!");
}
}
The test, run through ant, fails as follows:
[junit] solr.solr.home= /Users/tod/src/vufind/solr/vufind
[junit] SLF4J: Defaulting to no-operation (NOP) logger implementation
[junit] SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[junit] SLF4J: Failed to load class "org.slf4j.impl.StaticMDCBinder".
[junit] SLF4J: Defaulting to no-operation MDCAdapter implementation.
[junit] SLF4J: See http://www.slf4j.org/codes.html#no_static_mdc_binder for further details.
[junit] Tests run: 0, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 1.299 sec
[junit]
[junit] ------------- Standard Error -----------------
[junit] SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
[junit] SLF4J: Defaulting to no-operation (NOP) logger implementation
[junit] SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[junit] SLF4J: Failed to load class "org.slf4j.impl.StaticMDCBinder".
[junit] SLF4J: Defaulting to no-operation MDCAdapter implementation.
[junit] SLF4J: See http://www.slf4j.org/codes.html#no_static_mdc_binder for further details.
[junit] ------------- ---------------- ---------------
[junit] Testcase: org.vufind.solr.handler.tests.BrowseHandlerTest: Caused an ERROR
[junit] SolrCore 'biblio' is not available due to init failure: JVM Error creating core [biblio]: null
[junit] org.apache.solr.common.SolrException: SolrCore 'biblio' is not available due to init failure: JVM Error creating core [biblio]: null
[junit] at org.apache.solr.core.CoreContainer.getCore(CoreContainer.java:1066)
[junit] at org.vufind.solr.handler.tests.BrowseHandlerTest.prepareClass(BrowseHandlerTest.java:45)
[junit] Caused by: org.apache.solr.common.SolrException: JVM Error creating core [biblio]: null
[junit] at org.apache.solr.core.CoreContainer.create(CoreContainer.java:833)
[junit] at org.apache.solr.core.CoreContainer.access$000(CoreContainer.java:87)
[junit] at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:467)
[junit] at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:458)
[junit] at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[junit] at org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor$1.run(ExecutorUtil.java:231)
[junit] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[junit] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[junit] at java.lang.Thread.run(Thread.java:745)
[junit] Caused by: java.lang.ExceptionInInitializerError
[junit] at org.apache.lucene.analysis.icu.segmentation.ICUTokenizerFactory.inform(ICUTokenizerFactory.java:107)
[junit] at org.apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.java:721)
[junit] at org.apache.solr.schema.IndexSchema.<init>(IndexSchema.java:160)
[junit] at org.apache.solr.schema.IndexSchemaFactory.create(IndexSchemaFactory.java:56)
[junit] at org.apache.solr.schema.IndexSchemaFactory.buildIndexSchema(IndexSchemaFactory.java:70)
[junit] at org.apache.solr.core.ConfigSetService.createIndexSchema(ConfigSetService.java:108)
[junit] at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:79)
[junit] at org.apache.solr.core.CoreContainer.create(CoreContainer.java:812)
[junit] Caused by: java.lang.RuntimeException: java.io.IOException: Break Iterator Rule Data Magic Number Incorrect, or unsupported data version.
[junit] at org.apache.lucene.analysis.icu.segmentation.DefaultICUTokenizerConfig.readBreakIterator(DefaultICUTokenizerConfig.java:125)
[junit] at org.apache.lucene.analysis.icu.segmentation.DefaultICUTokenizerConfig.<clinit>(DefaultICUTokenizerConfig.java:66)
[junit] Caused by: java.io.IOException: Break Iterator Rule Data Magic Number Incorrect, or unsupported data version.
[junit] at com.ibm.icu.text.RBBIDataWrapper.get(RBBIDataWrapper.java:193)
[junit] at com.ibm.icu.text.RuleBasedBreakIterator.getInstanceFromCompiledRules(RuleBasedBreakIterator.java:57)
[junit] at org.apache.lucene.analysis.icu.segmentation.DefaultICUTokenizerConfig.readBreakIterator(DefaultICUTokenizerConfig.java:120)
[junit]
[junit]
[junit] Testcase: org.vufind.solr.handler.tests.BrowseHandlerTest: Caused an ERROR
[junit] null
[junit] java.lang.NullPointerException
[junit] at org.vufind.solr.handler.tests.BrowseHandlerTest.cleanUpClass(BrowseHandlerTest.java:52)
[junit]
[junit]
[junit] Test org.vufind.solr.handler.tests.BrowseHandlerTest FAILED
This is the directory structure:
.../solr/vufind/
authority/
conf/
core.properties
biblio/
conf/
core.properties
index/
solr.xml
The solr.solr.home property is set to the solr/vufind directory, and I need to load the biblio core. I don't get to dig into code very often, so my Java and IDE skills are a bit rusty.
Any advice is welcome, whether how to fix or an alternate approach.
Best,
-Tod
Tod Olson <to...@uchicago.edu>>
Systems Librarian
Interim Director for Integrated Library Systems
University of Chicago Library
Re: Debugging custom RequestHander: spinning up a core for debugging
Posted by Erick Erickson <er...@gmail.com>.
My guess is this isn't a Solr issue at all; you are somehow using an old Java.
RBBIDataWrapper is from
com.ibm.icu.text;
I saw on a quick Google that this was cured by re-installing Eclipse,
but that was from 5 years ago.
You say your Java and IDE skills are a bit rusty, maybe you haven't
updated your Java JDK or Eclipse in a while? I don't know if Eclipse
somehow has its own Java (I haven't used Eclipse for quite a while).
I take it this runs outside Eclipse OK? (well, with problems otherwise
you wouldn't be stepping through it.....)
Best,
Erick
On Fri, Dec 15, 2017 at 1:16 PM, Tod Olson <to...@uchicago.edu> wrote:
> Hi everyone,
>
> I need to do some step-wise debugging on a custom RequestHandler. I'm trying to spin up a core in a Junit test, with the idea of running it inside of Eclipse for debugging. (If there's an easier way, I'd like to see a walk through!) Problem is the core fails to spin up with:
>
> java.io.IOException: Break Iterator Rule Data Magic Number Incorrect, or unsupported data version
>
> Here's the code, just trying to load (cribbed and adapted from https://stackoverflow.com/questions/45506381/how-to-debug-solr-plugin):
>
> public class BrowseHandlerTest
> {
> private static CoreContainer container;
> private static SolrCore core;
>
> private static final Logger logger = Logger.getGlobal();
>
>
>
> @BeforeClass
> public static void prepareClass() throws Exception
> {
> String solrHomeProp = "solr.solr.home";
> System.out.println(solrHomeProp + "= " + System.getProperty(solrHomeProp));
> // create the core container from the solr.solr.home system property
> container = new CoreContainer();
> container.load();
> core = container.getCore("biblio");
> logger.info<http://logger.info>("Solr core loaded!");
> }
>
> @AfterClass
> public static void cleanUpClass()
> {
> core.close();
> container.shutdown();
> logger.info<http://logger.info>("Solr core shut down!");
> }
> }
>
> The test, run through ant, fails as follows:
>
> [junit] solr.solr.home= /Users/tod/src/vufind/solr/vufind
> [junit] SLF4J: Defaulting to no-operation (NOP) logger implementation
> [junit] SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
> [junit] SLF4J: Failed to load class "org.slf4j.impl.StaticMDCBinder".
> [junit] SLF4J: Defaulting to no-operation MDCAdapter implementation.
> [junit] SLF4J: See http://www.slf4j.org/codes.html#no_static_mdc_binder for further details.
> [junit] Tests run: 0, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 1.299 sec
> [junit]
> [junit] ------------- Standard Error -----------------
> [junit] SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
> [junit] SLF4J: Defaulting to no-operation (NOP) logger implementation
> [junit] SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
> [junit] SLF4J: Failed to load class "org.slf4j.impl.StaticMDCBinder".
> [junit] SLF4J: Defaulting to no-operation MDCAdapter implementation.
> [junit] SLF4J: See http://www.slf4j.org/codes.html#no_static_mdc_binder for further details.
> [junit] ------------- ---------------- ---------------
> [junit] Testcase: org.vufind.solr.handler.tests.BrowseHandlerTest: Caused an ERROR
> [junit] SolrCore 'biblio' is not available due to init failure: JVM Error creating core [biblio]: null
> [junit] org.apache.solr.common.SolrException: SolrCore 'biblio' is not available due to init failure: JVM Error creating core [biblio]: null
> [junit] at org.apache.solr.core.CoreContainer.getCore(CoreContainer.java:1066)
> [junit] at org.vufind.solr.handler.tests.BrowseHandlerTest.prepareClass(BrowseHandlerTest.java:45)
> [junit] Caused by: org.apache.solr.common.SolrException: JVM Error creating core [biblio]: null
> [junit] at org.apache.solr.core.CoreContainer.create(CoreContainer.java:833)
> [junit] at org.apache.solr.core.CoreContainer.access$000(CoreContainer.java:87)
> [junit] at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:467)
> [junit] at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:458)
> [junit] at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> [junit] at org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor$1.run(ExecutorUtil.java:231)
> [junit] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> [junit] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> [junit] at java.lang.Thread.run(Thread.java:745)
> [junit] Caused by: java.lang.ExceptionInInitializerError
> [junit] at org.apache.lucene.analysis.icu.segmentation.ICUTokenizerFactory.inform(ICUTokenizerFactory.java:107)
> [junit] at org.apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.java:721)
> [junit] at org.apache.solr.schema.IndexSchema.<init>(IndexSchema.java:160)
> [junit] at org.apache.solr.schema.IndexSchemaFactory.create(IndexSchemaFactory.java:56)
> [junit] at org.apache.solr.schema.IndexSchemaFactory.buildIndexSchema(IndexSchemaFactory.java:70)
> [junit] at org.apache.solr.core.ConfigSetService.createIndexSchema(ConfigSetService.java:108)
> [junit] at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:79)
> [junit] at org.apache.solr.core.CoreContainer.create(CoreContainer.java:812)
> [junit] Caused by: java.lang.RuntimeException: java.io.IOException: Break Iterator Rule Data Magic Number Incorrect, or unsupported data version.
> [junit] at org.apache.lucene.analysis.icu.segmentation.DefaultICUTokenizerConfig.readBreakIterator(DefaultICUTokenizerConfig.java:125)
> [junit] at org.apache.lucene.analysis.icu.segmentation.DefaultICUTokenizerConfig.<clinit>(DefaultICUTokenizerConfig.java:66)
> [junit] Caused by: java.io.IOException: Break Iterator Rule Data Magic Number Incorrect, or unsupported data version.
> [junit] at com.ibm.icu.text.RBBIDataWrapper.get(RBBIDataWrapper.java:193)
> [junit] at com.ibm.icu.text.RuleBasedBreakIterator.getInstanceFromCompiledRules(RuleBasedBreakIterator.java:57)
> [junit] at org.apache.lucene.analysis.icu.segmentation.DefaultICUTokenizerConfig.readBreakIterator(DefaultICUTokenizerConfig.java:120)
> [junit]
> [junit]
> [junit] Testcase: org.vufind.solr.handler.tests.BrowseHandlerTest: Caused an ERROR
> [junit] null
> [junit] java.lang.NullPointerException
> [junit] at org.vufind.solr.handler.tests.BrowseHandlerTest.cleanUpClass(BrowseHandlerTest.java:52)
> [junit]
> [junit]
> [junit] Test org.vufind.solr.handler.tests.BrowseHandlerTest FAILED
>
> This is the directory structure:
>
> .../solr/vufind/
> authority/
> conf/
> core.properties
> biblio/
> conf/
> core.properties
> index/
> solr.xml
>
> The solr.solr.home property is set to the solr/vufind directory, and I need to load the biblio core. I don't get to dig into code very often, so my Java and IDE skills are a bit rusty.
>
> Any advice is welcome, whether how to fix or an alternate approach.
>
> Best,
>
> -Tod
>
> Tod Olson <to...@uchicago.edu>>
> Systems Librarian
> Interim Director for Integrated Library Systems
> University of Chicago Library
>