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 Greg Pendlebury <gr...@gmail.com> on 2011/04/06 06:48:26 UTC

Embedded Solr constructor not returning

Hi All,

I'm hoping this is a reasonably trivial issue, but it's frustrating me to no
end. I'm putting together a tiny command line app to write data into an
index. It has no web based Solr running against it; the index will be moved
at a later time to have a proper server instance start for responding to
queries. My problem however is I seem to have stalled on instantiating the
embedded server:

    private SolrServer startSolr(String home) throws Exception {
        try {
            System.setProperty("solr.solr.home", home);
            CoreContainer.Initializer initializer = new
CoreContainer.Initializer();
            solrCore = initializer.initialize();
            return new EmbeddedSolrServer(solrCore, "");
        } catch(Exception ex) {
            log.error("\n=======\nFailed to start Solr server\n");
            throw ex;
        }
    }

The constructor for the embedded server just never comes back. I've seen
three or four different ways of starting the server with varying levels of
complexity, and they all APPEAR to work, but still do not return. STDOUT
show the output I have largely come to expect from watching Solr start
'correctly':

=======
Starting Solr:

JNDI not configured for solr (NoInitialContextEx)
using system property solr.solr.home: C:\test\harvester\solr
looking for solr.xml: C:\test\harvester\solr\solr.xml
Solr home set to 'C:\test\harvester\solr\'
Loaded SolrConfig: solrconfig.xml
Opening new SolrCore at C:\test\harvester\solr\,
dataDir=C:\tf2\geonames\harvester\solr\.\data\
Reading Solr Schema
Schema name=test
created string: org.apache.solr.schema.StrField
created date: org.apache.solr.schema.TrieDateField
created sint: org.apache.solr.schema.SortableIntField
created sfloat: org.apache.solr.schema.SortableFloatField
created null: org.apache.solr.analysis.WhitespaceTokenizerFactory
created null: org.apache.solr.analysis.LowerCaseFilterFactory
created null: org.apache.solr.analysis.WhitespaceTokenizerFactory
created null: org.apache.solr.analysis.LowerCaseFilterFactory
created text: org.apache.solr.schema.TextField
default search field is basic_name
query parser default operator is AND
unique key field: id
No JMX servers found, not exposing Solr information with JMX.
created /update: solr.XmlUpdateRequestHandler
adding lazy requestHandler: solr.CSVRequestHandler
created /update/csv: solr.CSVRequestHandler
Opening Searcher@11b86c7 main
AutoCommit: disabled
registering core:
[] Registered new searcher Searcher@11b86c7 main
Terminate batch job (Y/N)? y


At this stage I'm grasping at straws. It appears as though the embedded
instance is behaving like a proper server, waiting for a request or
something. I've scrubbed the solrconfig.xml (from from the Solr example
download) file back to remove most entries, but perhaps I'm using the
incorrect handlers/listeners for an embedded server?

I'm a tad confused though, because every other time I've done this
(admittedly in a servlet, not a command line app) the constructor simply
returns straight away and execution of my app code continues.

Any advice or suggestions would be greatly appreciated.

Ta,
Greg

Re: Embedded Solr constructor not returning

Posted by Greg Pendlebury <gr...@gmail.com>.
>> Sounds good.  Please go ahead and make this change yourself.

Done.

Ta,
Greg

On 6 April 2011 22:52, Steven A Rowe <sa...@syr.edu> wrote:

> Hi Greg,
>
> > I need the servlet API in my app for it to work, despite being command
> > line.
> > So adding this to the maven POM fixed everything:
> >         <dependency>
> >             <groupId>javax.servlet</groupId>
> >             <artifactId>servlet-api</artifactId>
> >             <version>2.5</version>
> >         </dependency>
> >
> > Perhaps this dependency could be listed on the wiki? Alongside the sample
> > code for using embedded solr?
> > http://wiki.apache.org/solr/Solrj
>
> Sounds good.  Please go ahead and make this change yourself.
>
> FYI, the Solr 3.1 POM has a servlet-api dependency, but the scope is
> "provided", because the servlet container includes this dependency.  When
> *you* are the container, you have to provide it.
>
> Steve
>

RE: Embedded Solr constructor not returning

Posted by Steven A Rowe <sa...@syr.edu>.
Hi Greg,

> I need the servlet API in my app for it to work, despite being command
> line.
> So adding this to the maven POM fixed everything:
>         <dependency>
>             <groupId>javax.servlet</groupId>
>             <artifactId>servlet-api</artifactId>
>             <version>2.5</version>
>         </dependency>
> 
> Perhaps this dependency could be listed on the wiki? Alongside the sample
> code for using embedded solr?
> http://wiki.apache.org/solr/Solrj

Sounds good.  Please go ahead and make this change yourself.

FYI, the Solr 3.1 POM has a servlet-api dependency, but the scope is "provided", because the servlet container includes this dependency.  When *you* are the container, you have to provide it.

Steve

Re: Embedded Solr constructor not returning

Posted by Greg Pendlebury <gr...@gmail.com>.
Hmmm, after being stuck on this for hours, I find the answer myself
15minutes after asking for help... as usual. :)

For anyone interested, and no doubt this will not be a revelation for some,
I need the servlet API in my app for it to work, despite being command line.
So adding this to the maven POM fixed everything:
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>

Perhaps this dependency could be listed on the wiki? Alongside the sample
code for using embedded solr?
http://wiki.apache.org/solr/Solrj

Logback is passing along all of my logging but I suspect I'd have to add
some Solr logging config before it would tell me this itself. I only
stumbled on it by accident:
http://osdir.com/ml/solr-user.lucene.apache.org/2009-11/msg00831.html



On 6 April 2011 14:48, Greg Pendlebury <gr...@gmail.com> wrote:

> Hi All,
>
> I'm hoping this is a reasonably trivial issue, but it's frustrating me to
> no end. I'm putting together a tiny command line app to write data into an
> index. It has no web based Solr running against it; the index will be moved
> at a later time to have a proper server instance start for responding to
> queries. My problem however is I seem to have stalled on instantiating the
> embedded server:
>
>     private SolrServer startSolr(String home) throws Exception {
>         try {
>             System.setProperty("solr.solr.home", home);
>             CoreContainer.Initializer initializer = new
> CoreContainer.Initializer();
>             solrCore = initializer.initialize();
>             return new EmbeddedSolrServer(solrCore, "");
>         } catch(Exception ex) {
>             log.error("\n=======\nFailed to start Solr server\n");
>             throw ex;
>         }
>     }
>
> The constructor for the embedded server just never comes back. I've seen
> three or four different ways of starting the server with varying levels of
> complexity, and they all APPEAR to work, but still do not return. STDOUT
> show the output I have largely come to expect from watching Solr start
> 'correctly':
>
> =======
> Starting Solr:
>
> JNDI not configured for solr (NoInitialContextEx)
> using system property solr.solr.home: C:\test\harvester\solr
> looking for solr.xml: C:\test\harvester\solr\solr.xml
> Solr home set to 'C:\test\harvester\solr\'
> Loaded SolrConfig: solrconfig.xml
> Opening new SolrCore at C:\test\harvester\solr\,
> dataDir=C:\tf2\geonames\harvester\solr\.\data\
> Reading Solr Schema
> Schema name=test
> created string: org.apache.solr.schema.StrField
> created date: org.apache.solr.schema.TrieDateField
> created sint: org.apache.solr.schema.SortableIntField
> created sfloat: org.apache.solr.schema.SortableFloatField
> created null: org.apache.solr.analysis.WhitespaceTokenizerFactory
> created null: org.apache.solr.analysis.LowerCaseFilterFactory
> created null: org.apache.solr.analysis.WhitespaceTokenizerFactory
> created null: org.apache.solr.analysis.LowerCaseFilterFactory
> created text: org.apache.solr.schema.TextField
> default search field is basic_name
> query parser default operator is AND
> unique key field: id
> No JMX servers found, not exposing Solr information with JMX.
> created /update: solr.XmlUpdateRequestHandler
> adding lazy requestHandler: solr.CSVRequestHandler
> created /update/csv: solr.CSVRequestHandler
> Opening Searcher@11b86c7 main
> AutoCommit: disabled
> registering core:
> [] Registered new searcher Searcher@11b86c7 main
> Terminate batch job (Y/N)? y
>
>
> At this stage I'm grasping at straws. It appears as though the embedded
> instance is behaving like a proper server, waiting for a request or
> something. I've scrubbed the solrconfig.xml (from from the Solr example
> download) file back to remove most entries, but perhaps I'm using the
> incorrect handlers/listeners for an embedded server?
>
> I'm a tad confused though, because every other time I've done this
> (admittedly in a servlet, not a command line app) the constructor simply
> returns straight away and execution of my app code continues.
>
> Any advice or suggestions would be greatly appreciated.
>
> Ta,
> Greg
>
>
>