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

Reply via email to