From 3da786abb207be64ae210db88d6ba064adef27cc Mon Sep 17 00:00:00 2001 From: liningrui Date: Wed, 9 Jan 2019 13:29:40 +0800 Subject: [PATCH 1/3] Adapt RestClient to support connection reuse Change-Id: I328065488049ec81e507b469104570d8f094f1af --- pom.xml | 8 +++---- .../baidu/hugegraph/client/RestClient.java | 4 ++++ .../baidu/hugegraph/driver/HugeClient.java | 24 ++++++++++++++----- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/pom.xml b/pom.xml index e1c08785..fd14087e 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.baidu.hugegraph hugegraph-client - 1.6.11 + 1.6.12 jar hugegraph-client @@ -53,8 +53,8 @@ UTF-8 1.8 1.8 - 1.5.8 - 2.25.1 + 1.5.9 + 2.22 2.8.47 @@ -113,7 +113,7 @@ - 1.6.11.0 + 1.6.12.0 diff --git a/src/main/java/com/baidu/hugegraph/client/RestClient.java b/src/main/java/com/baidu/hugegraph/client/RestClient.java index 36efa56d..519f5a2d 100644 --- a/src/main/java/com/baidu/hugegraph/client/RestClient.java +++ b/src/main/java/com/baidu/hugegraph/client/RestClient.java @@ -41,6 +41,10 @@ public RestClient(String url, int timeout) { super(url, timeout * SECOND); } + public RestClient(String url, int timeout, int maxTotal, int maxPerRoute) { + super(url, timeout * SECOND, maxTotal, maxPerRoute); + } + public RestClient(String url, String username, String password, int timeout) { super(url, username, password, timeout * SECOND); } diff --git a/src/main/java/com/baidu/hugegraph/driver/HugeClient.java b/src/main/java/com/baidu/hugegraph/driver/HugeClient.java index 03e6e9e6..4ed2fb9f 100644 --- a/src/main/java/com/baidu/hugegraph/driver/HugeClient.java +++ b/src/main/java/com/baidu/hugegraph/driver/HugeClient.java @@ -34,6 +34,8 @@ public class HugeClient { ClientVersion.check(); } + private final RestClient client; + private VersionManager version; private GraphsManager graphs; private SchemaManager schema; @@ -49,14 +51,22 @@ public HugeClient(String url, String graph) { } public HugeClient(String url, String graph, int timeout) { - RestClient client = null; try { - client = new RestClient(url, timeout); + this.client = new RestClient(url, timeout); } catch (ProcessingException e) { throw new ServerException("Failed to connect url '%s'", url); } + this.initManagers(this.client, graph); + } - this.initManagers(client, graph); + public HugeClient(String url, String graph, int timeout, + int maxTotal, int maxPerRoute) { + try { + this.client = new RestClient(url, timeout, maxTotal, maxPerRoute); + } catch (ProcessingException e) { + throw new ServerException("Failed to connect url '%s'", url); + } + this.initManagers(this.client, graph); } public HugeClient(String url, String graph, @@ -67,14 +77,16 @@ public HugeClient(String url, String graph, public HugeClient(String url, String graph, String username, String password, int timeout) { - RestClient client = null; try { - client = new RestClient(url, username, password, timeout); + this.client = new RestClient(url, username, password, timeout); } catch (ProcessingException e) { throw new ServerException("Failed to connect url '%s'", url); } + this.initManagers(this.client, graph); + } - this.initManagers(client, graph); + public void close() { + this.client.close(); } private void initManagers(RestClient client, String graph) { From 1c27c4f60d7f4689629f668869f62a059cb10768 Mon Sep 17 00:00:00 2001 From: liningrui Date: Tue, 9 Apr 2019 10:37:07 +0800 Subject: [PATCH 2/3] Let HugeClient implement Closeable Change-Id: I41ff7e96d3c8829727b340beccf7ea4aec45d707 --- src/main/java/com/baidu/hugegraph/driver/HugeClient.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/baidu/hugegraph/driver/HugeClient.java b/src/main/java/com/baidu/hugegraph/driver/HugeClient.java index 4ed2fb9f..542bb409 100644 --- a/src/main/java/com/baidu/hugegraph/driver/HugeClient.java +++ b/src/main/java/com/baidu/hugegraph/driver/HugeClient.java @@ -19,6 +19,8 @@ package com.baidu.hugegraph.driver; +import java.io.Closeable; + import javax.ws.rs.ProcessingException; import com.baidu.hugegraph.client.RestClient; @@ -26,7 +28,7 @@ import com.baidu.hugegraph.util.VersionUtil; import com.baidu.hugegraph.version.ClientVersion; -public class HugeClient { +public class HugeClient implements Closeable { private static final int DEFAULT_TIMEOUT = 20; @@ -85,6 +87,7 @@ public HugeClient(String url, String graph, this.initManagers(this.client, graph); } + @Override public void close() { this.client.close(); } From 468808d587e1e09f1276ff2f484bb9a424e6436e Mon Sep 17 00:00:00 2001 From: liningrui Date: Tue, 9 Apr 2019 18:28:40 +0800 Subject: [PATCH 3/3] Let HugeClient use default max conns Change-Id: I326d8d8e93b2fb2f8041abbbe0f4508f8e50b0d6 --- .../baidu/hugegraph/client/RestClient.java | 14 ++++++++--- .../baidu/hugegraph/driver/HugeClient.java | 25 ++++++++++++------- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/baidu/hugegraph/client/RestClient.java b/src/main/java/com/baidu/hugegraph/client/RestClient.java index 519f5a2d..325a07cc 100644 --- a/src/main/java/com/baidu/hugegraph/client/RestClient.java +++ b/src/main/java/com/baidu/hugegraph/client/RestClient.java @@ -41,14 +41,22 @@ public RestClient(String url, int timeout) { super(url, timeout * SECOND); } - public RestClient(String url, int timeout, int maxTotal, int maxPerRoute) { - super(url, timeout * SECOND, maxTotal, maxPerRoute); + public RestClient(String url, int timeout, int maxConns, + int maxConnsPerRoute) { + super(url, timeout * SECOND, maxConns, maxConnsPerRoute); } - public RestClient(String url, String username, String password, int timeout) { + public RestClient(String url, String username, String password, + int timeout) { super(url, username, password, timeout * SECOND); } + public RestClient(String url, String username, String password, + int timeout, int maxConns, int maxConnsPerRoute) { + super(url, username, password, timeout * SECOND, + maxConns, maxConnsPerRoute); + } + protected void checkStatus(Response response, Response.Status... statuses) { boolean match = false; for (Response.Status status : statuses) { diff --git a/src/main/java/com/baidu/hugegraph/driver/HugeClient.java b/src/main/java/com/baidu/hugegraph/driver/HugeClient.java index 542bb409..f01c6c1e 100644 --- a/src/main/java/com/baidu/hugegraph/driver/HugeClient.java +++ b/src/main/java/com/baidu/hugegraph/driver/HugeClient.java @@ -31,6 +31,8 @@ public class HugeClient implements Closeable { private static final int DEFAULT_TIMEOUT = 20; + private static final int DEFAULT_MAX_CONNS = 100; + private static final int DEFAULT_MAX_CONNS_PER_ROUTE = 40; static { ClientVersion.check(); @@ -53,18 +55,15 @@ public HugeClient(String url, String graph) { } public HugeClient(String url, String graph, int timeout) { - try { - this.client = new RestClient(url, timeout); - } catch (ProcessingException e) { - throw new ServerException("Failed to connect url '%s'", url); - } - this.initManagers(this.client, graph); + this(url, graph, timeout, DEFAULT_MAX_CONNS, + DEFAULT_MAX_CONNS_PER_ROUTE); } public HugeClient(String url, String graph, int timeout, - int maxTotal, int maxPerRoute) { + int maxConns, int maxConnsPerRoute) { try { - this.client = new RestClient(url, timeout, maxTotal, maxPerRoute); + this.client = new RestClient(url, timeout, maxConns, + maxConnsPerRoute); } catch (ProcessingException e) { throw new ServerException("Failed to connect url '%s'", url); } @@ -79,8 +78,16 @@ public HugeClient(String url, String graph, public HugeClient(String url, String graph, String username, String password, int timeout) { + this(url, graph, username, password, timeout, DEFAULT_MAX_CONNS, + DEFAULT_MAX_CONNS_PER_ROUTE); + } + + public HugeClient(String url, String graph, + String username, String password, + int timeout, int maxConns, int maxConnsPerRoute) { try { - this.client = new RestClient(url, username, password, timeout); + this.client = new RestClient(url, username, password, timeout, + maxConns, maxConnsPerRoute); } catch (ProcessingException e) { throw new ServerException("Failed to connect url '%s'", url); }