Hello,
I'm studying Solr to see technique of Lucene experts.
Seeing SolrServlet.java doPost and doGet, I thought I could call
SolrCore execute() and update() methods without servlet container
environment.
I provided the following Solr program:
public class HelloSolr {
static SolrCore core = SolrCore.getSolrCore();
private static final String[] contents = {
"A", "B", "C"
};
public static void main( String[] args ) throws Exception {
makeIndex();
}
static void makeIndex() throws IOException {
for( String content : contents ){
String xml = "" + content +
"";
update( xml );
}
commit();
}
static void update( String xml ) throws IOException {
System.out.println( "xml = " + xml );
StringReader reader = new StringReader( xml );
StringWriter writer = new StringWriter();
core.update( reader, writer );
System.out.println( writer.toString() );
writer.close();
reader.close();
}
static void commit() throws IOException {
update( "" );
}
}
This program worked, but it freezed after commit. The thread dump is as
follows:
Full thread dump Java HotSpot(TM) Client VM (1.5.0_06-b05 mixed mode,
sharing):
"Thread-2" daemon prio=6 tid=0x0311bc68 nid=0x36c runnable
[0x0338f000..0x0338fa
e8]
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:194)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
at java.io.BufferedInputStream.read(BufferedInputStream.java:313)
- locked <0x22fd7998> (a java.io.BufferedInputStream)
at java.io.FilterInputStream.read(FilterInputStream.java:111)
at java.io.FilterInputStream.read(FilterInputStream.java:90)
at
org.apache.tools.ant.taskdefs.StreamPumper.run(StreamPumper.java:90)
at java.lang.Thread.run(Thread.java:595)
"Thread-1" daemon prio=6 tid=0x03128f58 nid=0xbf8 runnable
[0x0334f000..0x0334fb
68]
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:177)
at
org.apache.tools.ant.taskdefs.StreamPumper.run(StreamPumper.java:90)
at java.lang.Thread.run(Thread.java:595)
"Thread-0" daemon prio=6 tid=0x02d86480 nid=0xd74 runnable
[0x0330f000..0x0330fb
e8]
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:194)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
at java.io.BufferedInputStream.read(BufferedInputStream.java:313)
- locked <0x22b52388> (a java.io.BufferedInputStream)
at java.io.FilterInputStream.read(FilterInputStream.java:90)
at
org.apache.tools.ant.taskdefs.StreamPumper.run(StreamPumper.java:90)
at java.lang.Thread.run(Thread.java:595)
"Low Memory Detector" daemon prio=6 tid=0x00a6e660 nid=0xdc8 runnable
[0x000
0..0x]
"CompilerThread0" daemon prio=10 tid=0x00a6d0f0 nid=0xa7c waiting on
condition [
0x..0x02c1f74c]
"Signal Dispatcher" daemon prio=10 tid=0x00a7ccb0 nid=0xfc8 waiting on
condition
[0x..0x]
"Finalizer" daemon prio=8 tid=0x00a47a70 nid=0xbc8 in Object.wait()
[0x02b9f000.
.0x02b9f9e8]
at java.lang.Object.wait(Native Method)
- waiting on <0x22fd4b70> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
- locked <0x22fd4b70> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
"Reference Handler" daemon prio=10 tid=0x00a39e60 nid=0x750 in Object.wait()
[0x
02b5f000..0x02b5fae8]
at java.lang.Object.wait(Native Method)
- waiting on <0x22fd4bf0> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:474)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
- locked <0x22fd4bf0> (a java.lang.ref.Reference$Lock)
"main" prio=6 tid=0x00036e38 nid=0xd90 runnable [0x0007f000..0x0007fc40]
at java.lang.ProcessImpl.waitFor(Native Method)
at org.apache.tools.ant.taskdefs.Execute.waitFor(Execute.java:539)
at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:471)
at org.apache.tools.ant.taskdefs.Java.fork(Java.java:751)
at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:171)
at org.apache.tools.ant.taskdefs.Java.execute(Java.java:84)
at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
at org.apache.tools.ant.Task.perform(Task.java:364)
at org.apache.tools.ant.Target.execute(Target.jav