Michael Pasternak has uploaded a new change for review. Change subject: sdk: implement shutdown() to deallocate system resources ......................................................................
sdk: implement shutdown() to deallocate system resources Change-Id: I2e8f28979e454d6373507c3095c09dc600a27b24 Signed-off-by: Michael Pasternak <mpast...@redhat.com> --- M ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/Api.java M ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/ConnectionsPool.java M ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/ConnectionsPoolBuilder.java M ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/HttpProxy.java M ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/HttpProxyBroker.java M ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/IdleConnectionMonitorThread.java 6 files changed, 59 insertions(+), 10 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine-sdk-java refs/changes/32/12232/1 diff --git a/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/Api.java b/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/Api.java index abe6977..09336f7 100644 --- a/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/Api.java +++ b/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/Api.java @@ -525,4 +525,12 @@ return null; } + /** + * When SDK instance is no longer needed, shut down the connection + * manager/httpproxy to ensure immediate deallocation of all system + * resources. + */ + public void shutdown() { + proxy.shutdown(); + } } diff --git a/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/ConnectionsPool.java b/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/ConnectionsPool.java index 2dcb46b..c7dc961 100644 --- a/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/ConnectionsPool.java +++ b/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/ConnectionsPool.java @@ -47,7 +47,8 @@ private DefaultHttpClient client = null; private CookieStore cookieStore; - URL url = null; + private IdleConnectionMonitorThread idleConnectionsWatchdog; + private URL url = null; /** * @@ -55,12 +56,22 @@ * DefaultHttpClient * @param url * oVirt API url + * @param idleCheckTTL + * idle connections check TTL + * @param closeCloseTTl + * idle connections close TTL */ - public ConnectionsPool(DefaultHttpClient client, URL url) { + public ConnectionsPool(DefaultHttpClient client, URL url, long idleCheckTTL, long closeCloseTTl) { this.client = client; this.cookieStore = this.client.getCookieStore(); this.url = url; injectHttpRequestRetryHandler(this.client); + idleConnectionsWatchdog = + new IdleConnectionMonitorThread( + this.client.getConnectionManager(), + idleCheckTTL, + closeCloseTTl); + idleConnectionsWatchdog.start(); } /** @@ -150,4 +161,14 @@ public URL getUrl() { return url; } + + /** + * When ConnectionsPool instance is no longer needed, shut down the + * connection manager and idle connections watchdog to ensure immediate + * deallocation of all system resources. + */ + public void shutdown() { + this.idleConnectionsWatchdog.shutdown(); + this.getConnectionManager().shutdown(); + } } diff --git a/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/ConnectionsPoolBuilder.java b/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/ConnectionsPoolBuilder.java index 284acac..f4492b7 100644 --- a/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/ConnectionsPoolBuilder.java +++ b/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/ConnectionsPoolBuilder.java @@ -226,8 +226,6 @@ getPort(url, port))), MAX_CONNECTIONS_PER_HOST); - new IdleConnectionMonitorThread(cm, WAIT_IDLE_CHECK_TTL, WAIT_IDLE_CLOSE_TTL).start(); - return cm; } @@ -315,9 +313,19 @@ * @return ConnectionsPool */ public ConnectionsPool build() { - return new ConnectionsPool(createDefaultHttpClient(url, username, password, key_file, - cert_file, ca_file, port, timeout), - this.urlobj); + return new ConnectionsPool( + createDefaultHttpClient(url, + username, + password, + key_file, + cert_file, + ca_file, + port, + timeout + ), + this.urlobj, + WAIT_IDLE_CHECK_TTL, + WAIT_IDLE_CLOSE_TTL); } /** diff --git a/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/HttpProxy.java b/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/HttpProxy.java index ce42e78..9f716de 100644 --- a/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/HttpProxy.java +++ b/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/HttpProxy.java @@ -225,10 +225,11 @@ } /** - * When HttpClient instance is no longer needed, shut down the connection manager to ensure immediate deallocation - * of all system resources. + * When HttpProxy instance is no longer needed, shut down the + * connection manager to ensure immediate deallocation of all system + * resources. */ public void shutdown() { - this.pool.getConnectionManager().shutdown(); + this.pool.shutdown(); } } diff --git a/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/HttpProxyBroker.java b/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/HttpProxyBroker.java index ee39077..8355e2b 100644 --- a/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/HttpProxyBroker.java +++ b/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/HttpProxyBroker.java @@ -490,4 +490,12 @@ } return Mapper.map(res, to, this); } + + /** + * When HttpProxyBroker instance is no longer needed, shut down the connection + * manager to ensure immediate deallocation of all system resources. + */ + public void shutdown() { + this.proxy.shutdown(); + } } diff --git a/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/IdleConnectionMonitorThread.java b/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/IdleConnectionMonitorThread.java index f178612..ea6e8bf 100644 --- a/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/IdleConnectionMonitorThread.java +++ b/ovirt-engine-sdk-java/src/main/java/org/ovirt/engine/sdk/web/IdleConnectionMonitorThread.java @@ -60,6 +60,9 @@ } } + /** + * Shuts down ConnectionMonitorThread + */ public void shutdown() { shutdown = true; synchronized (this) { -- To view, visit http://gerrit.ovirt.org/12232 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2e8f28979e454d6373507c3095c09dc600a27b24 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine-sdk-java Gerrit-Branch: master Gerrit-Owner: Michael Pasternak <mpast...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches