added special handling of the BinaryResponseWriter in the solr interface

which makes it possible to use solrj with the javabin format which is
much better (compressed, no xml overhead, java object streams) and
faster. Furthermore, this enables the 'shards' option in the solr
interface which connects one solr (YaCy) to another solr (YaCy) ad-hoc.
pull/1/head
orbiter 12 years ago
parent d0e78082d1
commit 1ca4b9612c

@ -58,6 +58,7 @@ import org.apache.solr.common.util.NamedList;
import org.apache.solr.core.SolrCore;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.request.SolrRequestInfo;
import org.apache.solr.response.BinaryResponseWriter;
import org.apache.solr.response.QueryResponseWriter;
import org.apache.solr.response.ResultContext;
import org.apache.solr.response.SolrQueryResponse;
@ -228,15 +229,25 @@ public class select {
}
// write the result directly to the output stream
Writer ow = new FastWriter(new OutputStreamWriter(out, UTF8.charset));
try {
responseWriter.write(ow, req, response);
ow.flush();
} catch (final IOException e1) {
} finally {
req.close();
SolrRequestInfo.clearRequestInfo();
try {ow.close();} catch (final IOException e1) {}
if (responseWriter instanceof BinaryResponseWriter) {
try {
((BinaryResponseWriter) responseWriter).write(out, req, response);
} catch (final IOException e1) {
} finally {
req.close();
SolrRequestInfo.clearRequestInfo();
}
} else {
Writer ow = new FastWriter(new OutputStreamWriter(out, UTF8.charset));
try {
responseWriter.write(ow, req, response);
ow.flush();
} catch (final IOException e1) {
} finally {
req.close();
SolrRequestInfo.clearRequestInfo();
try {ow.close();} catch (final IOException e1) {}
}
}
// log result

Loading…
Cancel
Save