Issue resolved, with great thanks to Tim Casey.
The issue was based on my own poor understanding of the mechanics of
ZooKeeper. The "host" setting in solr.xml must find the correct value
and not default to localhost. Simply hard-wiring host to the network
address of the computer made everything work.


On Sun, Nov 3, 2013 at 12:04 PM, Jack Park <jackp...@topicquests.org> wrote:
> I now have a single ZK running standalone on 2121. On the same CPU, I
> have three nodes.
>
> I used a curl to send over two documents, one each to two of the three
> nodes in the cloud.  According to a web query, they are both there.
>
> My solrconfig.xml file has a custom update response processor chain
> defined thus:
>
> <updateRequestProcessorChain name="harvest" default="true">
>       <processor class="solr.RunUpdateProcessorFactory"/>
>       <processor
> class="org.apache.solr.update.TopicQuestsHarvestProcessFactory">
>         <str name="inputField">hello</str>
>       </processor>
>       <processor class="solr.LogUpdateProcessorFactory"/>
>     </updateRequestProcessorChain>
>
> where the added process intercepts a SolrDocument after it is
> processed and sends it out as a JSON object to TCP socket listeners.
>
> The instance of SolrJ I have implemented looks like this:
>
>      LBHttpSolrServer sv = new LBHttpSolrServer(solrurla,solrurlb,solrurlc);
>     sv.getHttpClient().getParams().setParameter("update.chain",
> "update"); // "merge");
>        CloudSolrServer server = new CloudSolrServer(zkurl,sv);
>     server.setDefaultCollection("collection1");
>
> where the commented-out code would call my "merge" update chain.
>
> In curl tests, /solr/merge?commit=true ... got a jetty error
> /solr/merge not found.
> When I changed that to /solr/update?commit=true... the document got
> indexed. Thus, commenting out "merge" in favor of "update".
>
> In any case (merge, update, or no update.chain setting at all), the
> SolrJ implementation fails, typically at a zookeeper.out nio exception
> "socket closed by peer".
>
> Rewriting my implementation to this:
>        CloudSolrServer server = new CloudSolrServer(zkurl);
>        server.setDefaultCollection("collection1");
> makes no change in behavior.
>
> Where is the error thrown?
>
> The code to build a doc is this (which reflects my field definitions):
>
>     SolrInputDocument doc = new SolrInputDocument();
>        doc.addField( "locator", "doc"+i);
>        doc.addField( "label", "document " + i);
>        doc.addField( "details", "This is document " + i);
>        server.add(doc);
>
> The error is thrown at server.add(doc)
>
> Many thanks in advance for any observations or suggestions.
>
> Cheers
> Jack

Reply via email to