Repository: hadoop
Updated Branches:
  refs/heads/trunk 6f2028bd1 -> 4e134a02a


HDFS-7215.Add JvmPauseMonitor to NFS gateway. Contributed by Brandon Li


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/4e134a02
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/4e134a02
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/4e134a02

Branch: refs/heads/trunk
Commit: 4e134a02a4b6f30704b99dfb166dc361daf426ea
Parents: 6f2028b
Author: Brandon Li <[email protected]>
Authored: Tue Oct 21 11:49:10 2014 -0700
Committer: Brandon Li <[email protected]>
Committed: Tue Oct 21 11:49:10 2014 -0700

----------------------------------------------------------------------
 .../java/org/apache/hadoop/nfs/nfs3/Nfs3Base.java |  5 +++--
 .../java/org/apache/hadoop/oncrpc/RpcProgram.java |  3 ++-
 .../hadoop/hdfs/nfs/nfs3/RpcProgramNfs3.java      | 18 +++++++++++++++++-
 hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt       |  2 ++
 .../src/site/apt/HdfsNfsGateway.apt.vm            |  4 +++-
 5 files changed, 27 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/4e134a02/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Base.java
----------------------------------------------------------------------
diff --git 
a/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Base.java
 
b/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Base.java
index b166330..40744bc 100644
--- 
a/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Base.java
+++ 
b/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Base.java
@@ -50,7 +50,7 @@ public abstract class Nfs3Base {
     startTCPServer(); // Start TCP server
 
     if (register) {
-      ShutdownHookManager.get().addShutdownHook(new Unregister(),
+      ShutdownHookManager.get().addShutdownHook(new NfsShutdownHook(),
           SHUTDOWN_HOOK_PRIORITY);
       try {
         rpcProgram.register(PortmapMapping.TRANSPORT_TCP, nfsBoundPort);
@@ -74,10 +74,11 @@ public abstract class Nfs3Base {
    */
   public static final int SHUTDOWN_HOOK_PRIORITY = 10;
 
-  private class Unregister implements Runnable {
+  private class NfsShutdownHook implements Runnable {
     @Override
     public synchronized void run() {
       rpcProgram.unregister(PortmapMapping.TRANSPORT_TCP, nfsBoundPort);
+      rpcProgram.stopDaemons();
     }
   }
 }

http://git-wip-us.apache.org/repos/asf/hadoop/blob/4e134a02/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/RpcProgram.java
----------------------------------------------------------------------
diff --git 
a/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/RpcProgram.java
 
b/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/RpcProgram.java
index 3190603..3343c75 100644
--- 
a/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/RpcProgram.java
+++ 
b/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/RpcProgram.java
@@ -136,8 +136,9 @@ public abstract class RpcProgram extends 
SimpleChannelUpstreamHandler {
     }
   }
 
-  // Start extra daemons
+  // Start extra daemons or services
   public void startDaemons() {}
+  public void stopDaemons() {}
   
   @Override
   public void messageReceived(ChannelHandlerContext ctx, MessageEvent e)

http://git-wip-us.apache.org/repos/asf/hadoop/blob/4e134a02/hadoop-hdfs-project/hadoop-hdfs-nfs/src/main/java/org/apache/hadoop/hdfs/nfs/nfs3/RpcProgramNfs3.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs-nfs/src/main/java/org/apache/hadoop/hdfs/nfs/nfs3/RpcProgramNfs3.java
 
b/hadoop-hdfs-project/hadoop-hdfs-nfs/src/main/java/org/apache/hadoop/hdfs/nfs/nfs3/RpcProgramNfs3.java
index 40a9043..b1076f2 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs-nfs/src/main/java/org/apache/hadoop/hdfs/nfs/nfs3/RpcProgramNfs3.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs-nfs/src/main/java/org/apache/hadoop/hdfs/nfs/nfs3/RpcProgramNfs3.java
@@ -126,6 +126,7 @@ import org.apache.hadoop.security.AccessControlException;
 import org.apache.hadoop.security.SecurityUtil;
 import org.apache.hadoop.security.UserGroupInformation;
 import org.apache.hadoop.security.authorize.AuthorizationException;
+import org.apache.hadoop.util.JvmPauseMonitor;
 import org.jboss.netty.buffer.ChannelBuffer;
 import org.jboss.netty.buffer.ChannelBuffers;
 import org.jboss.netty.channel.Channel;
@@ -158,6 +159,7 @@ public class RpcProgramNfs3 extends RpcProgram implements 
Nfs3Interface {
   private String writeDumpDir; // The dir save dump files
 
   private final RpcCallCache rpcCallCache;
+  private JvmPauseMonitor pauseMonitor;
 
   public RpcProgramNfs3(NfsConfiguration config, DatagramSocket 
registrationSocket,
       boolean allowInsecurePorts) throws IOException {
@@ -219,7 +221,21 @@ public class RpcProgramNfs3 extends RpcProgram implements 
Nfs3Interface {
 
   @Override
   public void startDaemons() {
-     writeManager.startAsyncDataSerivce();
+    if (pauseMonitor == null) {
+      pauseMonitor = new JvmPauseMonitor(config);
+      pauseMonitor.start();
+    }
+    writeManager.startAsyncDataSerivce();
+  }
+
+  @Override
+  public void stopDaemons() {
+    if (writeManager != null) {
+      writeManager.shutdownAsyncDataService();
+    }
+    if (pauseMonitor != null) {
+      pauseMonitor.stop();
+    }
   }
 
   // Checks the type of IOException and maps it to appropriate Nfs3Status code.

http://git-wip-us.apache.org/repos/asf/hadoop/blob/4e134a02/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt 
b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
index dd11cf5..c2b667e 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
+++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
@@ -979,6 +979,8 @@ Release 2.6.0 - UNRELEASED
     HDFS-7259. Unresponseive NFS mount point due to deferred COMMIT response.
     (brandonli)
 
+    HDFS-7215.Add JvmPauseMonitor to NFS gateway (brandonli)
+
     BREAKDOWN OF HDFS-6134 AND HADOOP-10150 SUBTASKS AND RELATED JIRAS
   
       HDFS-6387. HDFS CLI admin tool for creating & deleting an

http://git-wip-us.apache.org/repos/asf/hadoop/blob/4e134a02/hadoop-hdfs-project/hadoop-hdfs/src/site/apt/HdfsNfsGateway.apt.vm
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/site/apt/HdfsNfsGateway.apt.vm 
b/hadoop-hdfs-project/hadoop-hdfs/src/site/apt/HdfsNfsGateway.apt.vm
index 4044ae8..0e6c482 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/site/apt/HdfsNfsGateway.apt.vm
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/site/apt/HdfsNfsGateway.apt.vm
@@ -171,7 +171,9 @@ HDFS NFS Gateway
 </property>
 ----
 
-  * Customize log settings. To get NFS debug trace, users can edit the 
log4j.property file 
+  * JVM and log settings. You can export JVM settings (e.g., heap size and GC 
log) in 
+   HADOOP_NFS3_OPTS. More NFS related settings can be found in hadoop-env.sh. 
+   To get NFS debug trace, you can edit the log4j.property file 
    to add the following. Note, debug trace, especially for ONCRPC, can be very 
verbose.
 
     To change logging level:

Reply via email to