Browse Source

HDFS-12050. Ozone: StorageHandler: Implementation of close for releasing resources during shutdown. Contributed by Nandakumar.

Chen Liang 8 years ago
parent
commit
0a8c903d3f

+ 9 - 0
hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/scm/XceiverClientManager.java

@@ -154,4 +154,13 @@ public class XceiverClientManager {
       throw new IOException("Exception getting XceiverClient.", e);
     }
   }
+
+  /**
+   * Close and remove all the cached clients.
+   */
+  public void close() {
+    //closing is done through RemovalListener
+    clientCache.invalidateAll();
+    clientCache.cleanUp();
+  }
 }

+ 1 - 0
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/ObjectStoreHandler.java

@@ -177,6 +177,7 @@ public final class ObjectStoreHandler implements Closeable {
   @Override
   public void close() {
     LOG.info("Closing ObjectStoreHandler.");
+    storageHandler.close();
     if (this.storageContainerLocationClient != null) {
       this.storageContainerLocationClient.close();
     }

+ 5 - 0
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/interfaces/StorageHandler.java

@@ -273,4 +273,9 @@ public interface StorageHandler {
    * @throws IOException
    */
   ListKeys listKeys(ListArgs args) throws IOException, OzoneException;
+
+  /**
+   * Closes all the opened resources.
+   */
+  void close();
 }

+ 5 - 0
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/localstorage/LocalStorageHandler.java

@@ -353,4 +353,9 @@ public class LocalStorageHandler implements StorageHandler {
 
   }
 
+  @Override
+  public void close() {
+    //No resource to close, do nothing.
+  }
+
 }

+ 10 - 0
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/storage/DistributedStorageHandler.java

@@ -509,4 +509,14 @@ public final class DistributedStorageHandler implements StorageHandler {
     sdf.setTimeZone(TimeZone.getTimeZone(OzoneConsts.OZONE_TIME_ZONE));
     return sdf.format(date);
   }
+
+  /**
+   * Closes DistributedStorageHandler.
+   */
+  @Override
+  public void close() {
+    if(xceiverClientManager != null) {
+      xceiverClientManager.close();
+    }
+  }
 }