Skip to content

Commit

Permalink
Adapt RestClient to support connection reuse (hugegraph#33)
Browse files Browse the repository at this point in the history
Change-Id: I328065488049ec81e507b469104570d8f094f1af
  • Loading branch information
Linary authored and zhoney committed Sep 19, 2019
1 parent 4a8f218 commit 80cbf67
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 13 deletions.
8 changes: 4 additions & 4 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

<groupId>com.baidu.hugegraph</groupId>
<artifactId>hugegraph-client</artifactId>
<version>1.6.11</version>
<version>1.6.12</version>
<packaging>jar</packaging>

<name>hugegraph-client</name>
Expand Down Expand Up @@ -53,8 +53,8 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<compiler.source>1.8</compiler.source>
<compiler.target>1.8</compiler.target>
<hugegraph.common.version>1.5.8</hugegraph.common.version>
<jersey.version>2.25.1</jersey.version>
<hugegraph.common.version>1.5.9</hugegraph.common.version>
<jersey.version>2.22</jersey.version>
<mockito.version>2.8.47</mockito.version>
</properties>

Expand Down Expand Up @@ -113,7 +113,7 @@
<manifestEntries>
<!-- Must be on one line, otherwise the automatic
upgrade script cannot replace the version number -->
<Implementation-Version>1.6.11.0</Implementation-Version>
<Implementation-Version>1.6.12.0</Implementation-Version>
</manifestEntries>
</archive>
</configuration>
Expand Down
14 changes: 13 additions & 1 deletion src/main/java/com/baidu/hugegraph/client/RestClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,22 @@ public RestClient(String url, int timeout) {
super(url, timeout * SECOND);
}

public RestClient(String url, String username, String password, int timeout) {
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) {
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) {
Expand Down
38 changes: 30 additions & 8 deletions src/main/java/com/baidu/hugegraph/driver/HugeClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,27 @@

package com.baidu.hugegraph.driver;

import java.io.Closeable;

import javax.ws.rs.ProcessingException;

import com.baidu.hugegraph.client.RestClient;
import com.baidu.hugegraph.exception.ServerException;
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;
private static final int DEFAULT_MAX_CONNS = 100;
private static final int DEFAULT_MAX_CONNS_PER_ROUTE = 40;

static {
ClientVersion.check();
}

private final RestClient client;

private VersionManager version;
private GraphsManager graphs;
private SchemaManager schema;
Expand All @@ -49,14 +55,19 @@ public HugeClient(String url, String graph) {
}

public HugeClient(String url, String graph, int timeout) {
RestClient client = null;
this(url, graph, timeout, DEFAULT_MAX_CONNS,
DEFAULT_MAX_CONNS_PER_ROUTE);
}

public HugeClient(String url, String graph, int timeout,
int maxConns, int maxConnsPerRoute) {
try {
client = new RestClient(url, timeout);
this.client = new RestClient(url, timeout, maxConns,
maxConnsPerRoute);
} catch (ProcessingException e) {
throw new ServerException("Failed to connect url '%s'", url);
}

this.initManagers(client, graph);
this.initManagers(this.client, graph);
}

public HugeClient(String url, String graph,
Expand All @@ -67,14 +78,25 @@ public HugeClient(String url, String graph,
public HugeClient(String url, String graph,
String username, String password,
int timeout) {
RestClient client = null;
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 {
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);
}
this.initManagers(this.client, graph);
}

this.initManagers(client, graph);
@Override
public void close() {
this.client.close();
}

private void initManagers(RestClient client, String graph) {
Expand Down

0 comments on commit 80cbf67

Please sign in to comment.