You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by da...@apache.org on 2018/10/26 09:24:05 UTC
lucene-solr:jira/http2: Revert back to BUfferingResposeListener
Repository: lucene-solr
Updated Branches:
refs/heads/jira/http2 e9a12a878 -> a7f54c1d2
Revert back to BUfferingResposeListener
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/a7f54c1d
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/a7f54c1d
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/a7f54c1d
Branch: refs/heads/jira/http2
Commit: a7f54c1d2835e2a82577e67064e856fa62bdce25
Parents: e9a12a8
Author: Cao Manh Dat <da...@apache.org>
Authored: Fri Oct 26 16:23:57 2018 +0700
Committer: Cao Manh Dat <da...@apache.org>
Committed: Fri Oct 26 16:23:57 2018 +0700
----------------------------------------------------------------------
.../solr/client/solrj/impl/Http2SolrClient.java | 37 ++++++++++++--------
1 file changed, 23 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a7f54c1d/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Http2SolrClient.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Http2SolrClient.java b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Http2SolrClient.java
index 2001493..9a68de6 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Http2SolrClient.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Http2SolrClient.java
@@ -61,7 +61,9 @@ import org.eclipse.jetty.client.HttpClientTransport;
import org.eclipse.jetty.client.ProtocolHandlers;
import org.eclipse.jetty.client.api.Request;
import org.eclipse.jetty.client.api.Response;
+import org.eclipse.jetty.client.api.Result;
import org.eclipse.jetty.client.http.HttpClientTransportOverHTTP;
+import org.eclipse.jetty.client.util.BufferingResponseListener;
import org.eclipse.jetty.client.util.BytesContentProvider;
import org.eclipse.jetty.client.util.FormContentProvider;
import org.eclipse.jetty.client.util.InputStreamContentProvider;
@@ -222,26 +224,33 @@ public class Http2SolrClient extends SolrClient {
req.onComplete(listener);
}
- InputStreamResponseListener listener = new InputStreamResponseListener();
- req.onRequestQueued(asyncTracker.queuedListener)
- .onComplete(asyncTracker.completeListener).send(listener);
if (onComplete != null) {
- httpClient.getExecutor().execute(() -> {
- try {
- Response response = listener.get(idleTimeout, TimeUnit.SECONDS);
- onComplete.onSuccess(
- processErrorsAndResponse(response, parser, listener.getInputStream(), getEncoding(response), isV2ApiRequest(solrRequest))
- );
- } catch (InterruptedException e) {
- Thread.currentThread().interrupt();
- onComplete.onFailure(new RuntimeException(e));
- } catch (Exception e) {
- onComplete.onFailure(e);
+ // This async call only suitable for indexing since the response size is limited by 3MB
+ req.onRequestQueued(asyncTracker.queuedListener)
+ .onComplete(asyncTracker.completeListener).send(new BufferingResponseListener(3 * 1024 * 1024) {
+
+ @Override
+ public void onComplete(Result result) {
+ if (result.isFailed()) {
+ onComplete.onFailure(result.getFailure());
+ return;
+ }
+
+ NamedList<Object> rsp;
+ try {
+ rsp = processErrorsAndResponse(result.getResponse(),
+ parser, getContentAsInputStream(), getEncoding(), isV2ApiRequest(solrRequest));
+ onComplete.onSuccess(rsp);
+ } catch (Exception e) {
+ onComplete.onFailure(e);
+ }
}
});
return null;
} else {
try {
+ InputStreamResponseListener listener = new InputStreamResponseListener();
+ req.send(listener);
Response response = listener.get(idleTimeout, TimeUnit.SECONDS);
return processErrorsAndResponse(response, parser, listener.getInputStream(), getEncoding(response), isV2ApiRequest(solrRequest));
} catch (InterruptedException e) {