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

This commit is contained in:
Brandon Li 2014-10-21 11:49:10 -07:00
parent 6f2028bd15
commit 4e134a02a4
5 changed files with 27 additions and 5 deletions

View File

@ -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();
}
}
}

View File

@ -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)

View File

@ -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.

View File

@ -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

View File

@ -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: