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 kalyan chakravarthy <ka...@yahoo.com> on 2008/07/19 00:52:10 UTC

Issue with wt=javabin and multicore

I recently migrated from standard solr server to multicore implementation. I observed that wt=javabin is failing with this error

java.lang.RuntimeException: This is a binary writer , Cannot write to a characterstream
	at org.apache.solr.request.BinaryResponseWriter.write(BinaryResponseWriter.java:48)

I found that in org.apache.solr.servlet.SolrServlet.java, always PrintWriter object is sent as input parameter. 
This would fail if the ResponseWriter is of type BinaryResponseWriter.
{code}
 QueryResponseWriter responseWriter = core.getQueryResponseWriter(solrReq);
response.setContentType(responseWriter.getContentType(solrReq, solrRsp));
 PrintWriter out = response.getWriter();
 responseWriter.write(out, solrReq, solrRsp);
{code}

Suggested change would be similar to as implemented in SolrDispatchFilter
{code}
  response.setContentType(responseWriter.getContentType(solrReq, solrRsp));
  QueryResponseWriter responseWriter = core.getQueryResponseWriter(solrReq);
        if (Method.HEAD != reqMethod) {
            if (responseWriter instanceof BinaryQueryResponseWriter) {
            	BinaryQueryResponseWriter binWriter = (BinaryQueryResponseWriter) responseWriter;
                binWriter.write(response.getOutputStream(), solrReq, solrRsp);
            }else{
            	 PrintWriter out = response.getWriter();
                 responseWriter.write(out, solrReq, solrRsp);
            }
        } 
{code}

Any thoughts on this will be very valuable.

Thanks
Kalyan


      

Re: Issue with wt=javabin and multicore

Posted by Ryan McKinley <ry...@gmail.com>.
>
> I found that in org.apache.solr.servlet.SolrServlet.java, always  
> PrintWriter object is sent as input parameter.

SolrServlet is deprecated.

If you are going to use new features like MultiCore, make sure you  
have the XmlUpdateRequestHandler registered to /update

   <requestHandler name="/update"  
class="solr.XmlUpdateRequestHandler" />