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


      

Reply via email to