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/12/08 16:33:49 UTC
[2/2] lucene-solr:jira/http2: Fix thread leaks in
TestLBHttp2SolrClient
Fix thread leaks in TestLBHttp2SolrClient
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/3973060b
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/3973060b
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/3973060b
Branch: refs/heads/jira/http2
Commit: 3973060b18d8fa7e3a4050624040f2aae394cab9
Parents: 14fa6fd
Author: Cao Manh Dat <da...@apache.org>
Authored: Sat Dec 8 16:33:36 2018 +0000
Committer: Cao Manh Dat <da...@apache.org>
Committed: Sat Dec 8 16:33:36 2018 +0000
----------------------------------------------------------------------
.../client/solrj/TestLBHttp2SolrClient.java | 139 ++++++++++---------
1 file changed, 71 insertions(+), 68 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/3973060b/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttp2SolrClient.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttp2SolrClient.java b/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttp2SolrClient.java
index 2d80c4a..3849872 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttp2SolrClient.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttp2SolrClient.java
@@ -134,41 +134,42 @@ public class TestLBHttp2SolrClient extends SolrTestCaseJ4 {
for (int i = 0; i < solr.length; i++) {
s[i] = solr[i].getUrl();
}
- LBHttp2SolrClient client = getLBHttp2SolrClient(httpClient, s);
- client.setAliveCheckInterval(500);
- SolrQuery solrQuery = new SolrQuery("*:*");
- Set<String> names = new HashSet<>();
- QueryResponse resp = null;
- for (String ignored : s) {
- resp = client.query(solrQuery);
- assertEquals(10, resp.getResults().getNumFound());
- names.add(resp.getResults().get(0).getFieldValue("name").toString());
- }
- assertEquals(3, names.size());
-
- // Kill a server and test again
- solr[1].jetty.stop();
- solr[1].jetty = null;
- names.clear();
- for (String ignored : s) {
- resp = client.query(solrQuery);
- assertEquals(10, resp.getResults().getNumFound());
- names.add(resp.getResults().get(0).getFieldValue("name").toString());
- }
- assertEquals(2, names.size());
- assertFalse(names.contains("solr1"));
-
- // Start the killed server once again
- solr[1].startJetty();
- // Wait for the alive check to complete
- Thread.sleep(1200);
- names.clear();
- for (String ignored : s) {
- resp = client.query(solrQuery);
- assertEquals(10, resp.getResults().getNumFound());
- names.add(resp.getResults().get(0).getFieldValue("name").toString());
+ try (LBHttp2SolrClient client = getLBHttp2SolrClient(httpClient, s)) {
+ client.setAliveCheckInterval(500);
+ SolrQuery solrQuery = new SolrQuery("*:*");
+ Set<String> names = new HashSet<>();
+ QueryResponse resp = null;
+ for (String ignored : s) {
+ resp = client.query(solrQuery);
+ assertEquals(10, resp.getResults().getNumFound());
+ names.add(resp.getResults().get(0).getFieldValue("name").toString());
+ }
+ assertEquals(3, names.size());
+
+ // Kill a server and test again
+ solr[1].jetty.stop();
+ solr[1].jetty = null;
+ names.clear();
+ for (String ignored : s) {
+ resp = client.query(solrQuery);
+ assertEquals(10, resp.getResults().getNumFound());
+ names.add(resp.getResults().get(0).getFieldValue("name").toString());
+ }
+ assertEquals(2, names.size());
+ assertFalse(names.contains("solr1"));
+
+ // Start the killed server once again
+ solr[1].startJetty();
+ // Wait for the alive check to complete
+ Thread.sleep(1200);
+ names.clear();
+ for (String ignored : s) {
+ resp = client.query(solrQuery);
+ assertEquals(10, resp.getResults().getNumFound());
+ names.add(resp.getResults().get(0).getFieldValue("name").toString());
+ }
+ assertEquals(3, names.size());
}
- assertEquals(3, names.size());
}
private LBHttp2SolrClient getLBHttp2SolrClient(Http2SolrClient httpClient, String... s) {
@@ -176,31 +177,32 @@ public class TestLBHttp2SolrClient extends SolrTestCaseJ4 {
}
public void testTwoServers() throws Exception {
- LBHttp2SolrClient client = getLBHttp2SolrClient(httpClient, solr[0].getUrl(), solr[1].getUrl());
- client.setAliveCheckInterval(500);
- SolrQuery solrQuery = new SolrQuery("*:*");
- QueryResponse resp = null;
- solr[0].jetty.stop();
- solr[0].jetty = null;
- resp = client.query(solrQuery);
- String name = resp.getResults().get(0).getFieldValue("name").toString();
- Assert.assertEquals("solr/collection11", name);
- resp = client.query(solrQuery);
- name = resp.getResults().get(0).getFieldValue("name").toString();
- Assert.assertEquals("solr/collection11", name);
- solr[1].jetty.stop();
- solr[1].jetty = null;
- solr[0].startJetty();
- Thread.sleep(1200);
- try {
+ try (LBHttp2SolrClient client = getLBHttp2SolrClient(httpClient, solr[0].getUrl(), solr[1].getUrl())) {
+ client.setAliveCheckInterval(500);
+ SolrQuery solrQuery = new SolrQuery("*:*");
+ QueryResponse resp = null;
+ solr[0].jetty.stop();
+ solr[0].jetty = null;
resp = client.query(solrQuery);
- } catch(SolrServerException e) {
- // try again after a pause in case the error is lack of time to start server
- Thread.sleep(3000);
+ String name = resp.getResults().get(0).getFieldValue("name").toString();
+ Assert.assertEquals("solr/collection11", name);
resp = client.query(solrQuery);
+ name = resp.getResults().get(0).getFieldValue("name").toString();
+ Assert.assertEquals("solr/collection11", name);
+ solr[1].jetty.stop();
+ solr[1].jetty = null;
+ solr[0].startJetty();
+ Thread.sleep(1200);
+ try {
+ resp = client.query(solrQuery);
+ } catch(SolrServerException e) {
+ // try again after a pause in case the error is lack of time to start server
+ Thread.sleep(3000);
+ resp = client.query(solrQuery);
+ }
+ name = resp.getResults().get(0).getFieldValue("name").toString();
+ Assert.assertEquals("solr/collection10", name);
}
- name = resp.getResults().get(0).getFieldValue("name").toString();
- Assert.assertEquals("solr/collection10", name);
}
public void testReliability() throws Exception {
@@ -209,21 +211,22 @@ public class TestLBHttp2SolrClient extends SolrTestCaseJ4 {
s[i] = solr[i].getUrl();
}
- LBHttp2SolrClient client = getLBHttp2SolrClient(httpClient, s);
- client.setAliveCheckInterval(500);
+ try(LBHttp2SolrClient client = getLBHttp2SolrClient(httpClient, s)) {
+ client.setAliveCheckInterval(500);
- // Kill a server and test again
- solr[1].jetty.stop();
- solr[1].jetty = null;
+ // Kill a server and test again
+ solr[1].jetty.stop();
+ solr[1].jetty = null;
- // query the servers
- for (String value : s)
- client.query(new SolrQuery("*:*"));
+ // query the servers
+ for (String value : s)
+ client.query(new SolrQuery("*:*"));
- // Start the killed server once again
- solr[1].startJetty();
- // Wait for the alive check to complete
- waitForServer(30, client, 3, solr[1].name);
+ // Start the killed server once again
+ solr[1].startJetty();
+ // Wait for the alive check to complete
+ waitForServer(30, client, 3, solr[1].name);
+ }
}
// wait maximum ms for serverName to come back up