Skip to content

Commit

Permalink
#74 fix for connections leak when no Connection Pool used (#75)
Browse files Browse the repository at this point in the history
* #74 fix for connections leak when no Connection Pool used

* #74 fix for connections leak when no Connection Pool used, null check
  • Loading branch information
doom369 committed Dec 4, 2019
1 parent 27907f8 commit 9198f70
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ public void rollback() {

@Override
public void close() throws SQLException {
httpConnector.closeClient();
httpConnector.close();
closed = true;
}

Expand Down Expand Up @@ -388,7 +388,7 @@ public boolean isValid(int timeout) throws SQLException {
return false;
} finally {
if (isAnotherHttpClient) {
connector.closeClient();
connector.close();
}
}
}
Expand Down Expand Up @@ -458,10 +458,6 @@ public int getNetworkTimeout() {
return 0;
}

void cleanConnections() {
httpConnector.cleanConnections();
}

String getUrl() {
return url;
}
Expand Down
41 changes: 23 additions & 18 deletions src/main/java/cc/blynk/clickhouse/http/DefaultHttpConnector.java
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,9 @@ final class DefaultHttpConnector implements HttpConnector {

private static final Logger log = LoggerFactory.getLogger(DefaultHttpConnector.class);

protected final ClickHouseProperties properties;
private final ClickHouseProperties properties;

private HttpURLConnection httpURLConnection;

DefaultHttpConnector(ClickHouseProperties properties) {
this.properties = properties;
Expand Down Expand Up @@ -93,13 +95,10 @@ public InputStream post(List<ClickHouseExternalData> externalData, URI uri) thro
}

@Override
public void cleanConnections() {

}

@Override
public void closeClient() {

public void close() {
if (this.httpURLConnection != null) {
this.httpURLConnection.disconnect();
}
}

private void sendPostRequest(String sql, List<byte[]> batches, HttpURLConnection connection)
Expand Down Expand Up @@ -212,22 +211,28 @@ private byte[] buildMultipartData(List<ClickHouseExternalData> externalData, Str

private HttpURLConnection buildConnection(URI uri) throws ClickHouseException {
try {
HttpURLConnection prevConnection = this.httpURLConnection;
if (prevConnection != null) {
prevConnection.disconnect();
}

URL url = uri.toURL();
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setInstanceFollowRedirects(true);
connection.setRequestMethod("POST");
connection.setDoInput(true);
connection.setDoOutput(true);
HttpURLConnection newConnection = (HttpURLConnection) url.openConnection();
newConnection.setInstanceFollowRedirects(true);
newConnection.setRequestMethod("POST");
newConnection.setDoInput(true);
newConnection.setDoOutput(true);

connection.setConnectTimeout(properties.getConnectionTimeout());
newConnection.setConnectTimeout(properties.getConnectionTimeout());

setDefaultHeaders(connection);
setDefaultHeaders(newConnection);

if (connection instanceof HttpsURLConnection) {
configureHttps((HttpsURLConnection) connection);
if (newConnection instanceof HttpsURLConnection) {
configureHttps((HttpsURLConnection) newConnection);
}

return connection;
this.httpURLConnection = newConnection;
return newConnection;
} catch (IOException e) {
log.error("Can't build connection. {}", e.getMessage());
throw ClickHouseExceptionSpecifier.specify(e, properties.getHost(), properties.getPort());
Expand Down
5 changes: 1 addition & 4 deletions src/main/java/cc/blynk/clickhouse/http/HttpConnector.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@

import java.io.InputStream;
import java.net.URI;
import java.sql.SQLException;
import java.util.List;

public interface HttpConnector {
Expand All @@ -20,7 +19,5 @@ public interface HttpConnector {

void post(String sql, List<byte[]> data, URI uri) throws ClickHouseException;

void cleanConnections();

void closeClient() throws SQLException;
void close();
}

0 comments on commit 9198f70

Please sign in to comment.