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 10:35:52 UTC

[1/2] lucene-solr:jira/http2: Increase response limit for async call to 5MB

Repository: lucene-solr
Updated Branches:
  refs/heads/jira/http2 a7f54c1d2 -> 41db97304


Increase response limit for async call to 5MB


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/a97ba1df
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/a97ba1df
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/a97ba1df

Branch: refs/heads/jira/http2
Commit: a97ba1df58492fa8de6f4f9b57c3ccbc3d58f2c6
Parents: a7f54c1
Author: Cao Manh Dat <da...@apache.org>
Authored: Fri Oct 26 16:32:01 2018 +0700
Committer: Cao Manh Dat <da...@apache.org>
Committed: Fri Oct 26 16:32:01 2018 +0700

----------------------------------------------------------------------
 .../java/org/apache/solr/client/solrj/impl/Http2SolrClient.java  | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a97ba1df/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 9a68de6..2e4c0f9 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
@@ -225,9 +225,9 @@ public class Http2SolrClient extends SolrClient {
     }
 
     if (onComplete != null) {
-      // This async call only suitable for indexing since the response size is limited by 3MB
+      // This async call only suitable for indexing since the response size is limited by 5MB
       req.onRequestQueued(asyncTracker.queuedListener)
-          .onComplete(asyncTracker.completeListener).send(new BufferingResponseListener(3 * 1024 * 1024) {
+          .onComplete(asyncTracker.completeListener).send(new BufferingResponseListener(5 * 1024 * 1024) {
 
         @Override
         public void onComplete(Result result) {


[2/2] lucene-solr:jira/http2: Hardness resource management

Posted by da...@apache.org.
Hardness resource management


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/41db9730
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/41db9730
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/41db9730

Branch: refs/heads/jira/http2
Commit: 41db97304957d68aa7b9c17213651e52f5dffe3d
Parents: a97ba1d
Author: Cao Manh Dat <da...@apache.org>
Authored: Fri Oct 26 17:35:43 2018 +0700
Committer: Cao Manh Dat <da...@apache.org>
Committed: Fri Oct 26 17:35:43 2018 +0700

----------------------------------------------------------------------
 .../solr/client/solrj/impl/Http2SolrClient.java  | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/41db9730/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 2e4c0f9..08db9d1 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
@@ -75,6 +75,7 @@ import org.eclipse.jetty.http.HttpHeader;
 import org.eclipse.jetty.http.HttpMethod;
 import org.eclipse.jetty.http2.client.HTTP2Client;
 import org.eclipse.jetty.http2.client.http.HttpClientTransportOverHTTP2;
+import org.eclipse.jetty.util.BlockingArrayQueue;
 import org.eclipse.jetty.util.Fields;
 import org.eclipse.jetty.util.ssl.SslContextFactory;
 import org.eclipse.jetty.util.thread.QueuedThreadPool;
@@ -157,7 +158,8 @@ public class Http2SolrClient extends SolrClient {
   private HttpClient createHttpClient(Builder builder) {
     HttpClient httpClient;
 
-    QueuedThreadPool httpClientExecutor = new QueuedThreadPool(150, 4);
+    BlockingArrayQueue<Runnable> queue = new BlockingArrayQueue<>(128, 128);
+    QueuedThreadPool httpClientExecutor = new QueuedThreadPool(128, 4, 60000, queue);
     httpClientExecutor.setDaemon(true);
 
     SslContextFactory sslContextFactory;
@@ -238,8 +240,10 @@ public class Http2SolrClient extends SolrClient {
 
           NamedList<Object> rsp;
           try {
+            InputStream is = getContentAsInputStream();
+            assert ObjectReleaseTracker.track(is);
             rsp = processErrorsAndResponse(result.getResponse(),
-                parser, getContentAsInputStream(), getEncoding(), isV2ApiRequest(solrRequest));
+                parser, is, getEncoding(), isV2ApiRequest(solrRequest));
             onComplete.onSuccess(rsp);
           } catch (Exception e) {
             onComplete.onFailure(e);
@@ -252,7 +256,9 @@ public class Http2SolrClient extends SolrClient {
         InputStreamResponseListener listener = new InputStreamResponseListener();
         req.send(listener);
         Response response = listener.get(idleTimeout, TimeUnit.SECONDS);
-        return processErrorsAndResponse(response, parser, listener.getInputStream(), getEncoding(response), isV2ApiRequest(solrRequest));
+        InputStream is = listener.getInputStream();
+        assert ObjectReleaseTracker.track(is);
+        return processErrorsAndResponse(response, parser, is, getEncoding(response), isV2ApiRequest(solrRequest));
       } catch (InterruptedException e) {
         Thread.currentThread().interrupt();
         throw new RuntimeException(e);
@@ -447,6 +453,10 @@ public class Http2SolrClient extends SolrClient {
     return req;
   }
 
+  private boolean wantStream(final ResponseParser processor) {
+    return processor == null || processor instanceof InputStreamResponseParser;
+  }
+
   private NamedList<Object> processErrorsAndResponse(Response response,
                                                      final ResponseParser processor,
                                                      InputStream is,
@@ -482,7 +492,7 @@ public class Http2SolrClient extends SolrClient {
           }
       }
 
-      if (processor == null || processor instanceof InputStreamResponseParser) {
+      if (wantStream(parser)) {
         // no processor specified, return raw stream
         NamedList<Object> rsp = new NamedList<>();
         rsp.add("stream", is);
@@ -551,6 +561,7 @@ public class Http2SolrClient extends SolrClient {
       if (shouldClose) {
         try {
           is.close();
+          assert ObjectReleaseTracker.release(is);
         } catch (IOException e) {
           // quitely
         }