Repository: hadoop Updated Branches: refs/heads/trunk 40ef9fa17 -> ecc85620e
HDFS-12339. NFS Gateway on Shutdown Gives Unregistration Failure. Does Not Unregister with rpcbind Portmapper. Contributed by Mukul Kumar Singh. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/ecc85620 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/ecc85620 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/ecc85620 Branch: refs/heads/trunk Commit: ecc85620e83dc051502c3b85df11d2f50b0cd616 Parents: 40ef9fa Author: Anu Engineer <[email protected]> Authored: Sat Sep 23 12:27:34 2017 -0700 Committer: Anu Engineer <[email protected]> Committed: Sat Sep 23 12:27:34 2017 -0700 ---------------------------------------------------------------------- .../main/java/org/apache/hadoop/mount/MountdBase.java | 14 ++++++++++++-- .../java/org/apache/hadoop/nfs/nfs3/Nfs3Base.java | 10 ++++++++-- .../java/org/apache/hadoop/hdfs/nfs/nfs3/Nfs3.java | 10 ++++++++-- .../hdfs/nfs/nfs3/PrivilegedNfsGatewayStarter.java | 7 +++++-- 4 files changed, 33 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/ecc85620/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/mount/MountdBase.java ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/mount/MountdBase.java b/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/mount/MountdBase.java index 8c13b4f..0ff3084 100644 --- a/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/mount/MountdBase.java +++ b/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/mount/MountdBase.java @@ -109,6 +109,17 @@ abstract public class MountdBase { } } + public void stop() { + if (udpBoundPort > 0) { + rpcProgram.unregister(PortmapMapping.TRANSPORT_UDP, udpBoundPort); + udpBoundPort = 0; + } + if (tcpBoundPort > 0) { + rpcProgram.unregister(PortmapMapping.TRANSPORT_TCP, tcpBoundPort); + tcpBoundPort = 0; + } + } + /** * Priority of the mountd shutdown hook. */ @@ -117,8 +128,7 @@ abstract public class MountdBase { private class Unregister implements Runnable { @Override public synchronized void run() { - rpcProgram.unregister(PortmapMapping.TRANSPORT_UDP, udpBoundPort); - rpcProgram.unregister(PortmapMapping.TRANSPORT_TCP, tcpBoundPort); + stop(); } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/ecc85620/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 00e6d9f..ff83a5f 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 @@ -78,6 +78,13 @@ public abstract class Nfs3Base { nfsBoundPort = tcpServer.getBoundPort(); } + public void stop() { + if (nfsBoundPort > 0) { + rpcProgram.unregister(PortmapMapping.TRANSPORT_TCP, nfsBoundPort); + nfsBoundPort = 0; + } + rpcProgram.stopDaemons(); + } /** * Priority of the nfsd shutdown hook. */ @@ -86,8 +93,7 @@ public abstract class Nfs3Base { private class NfsShutdownHook implements Runnable { @Override public synchronized void run() { - rpcProgram.unregister(PortmapMapping.TRANSPORT_TCP, nfsBoundPort); - rpcProgram.stopDaemons(); + stop(); } } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/ecc85620/hadoop-hdfs-project/hadoop-hdfs-nfs/src/main/java/org/apache/hadoop/hdfs/nfs/nfs3/Nfs3.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs-nfs/src/main/java/org/apache/hadoop/hdfs/nfs/nfs3/Nfs3.java b/hadoop-hdfs-project/hadoop-hdfs-nfs/src/main/java/org/apache/hadoop/hdfs/nfs/nfs3/Nfs3.java index ac9abf8..8494493 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-nfs/src/main/java/org/apache/hadoop/hdfs/nfs/nfs3/Nfs3.java +++ b/hadoop-hdfs-project/hadoop-hdfs-nfs/src/main/java/org/apache/hadoop/hdfs/nfs/nfs3/Nfs3.java @@ -57,7 +57,7 @@ public class Nfs3 extends Nfs3Base { start(register); } - static void startService(String[] args, + static Nfs3 startService(String[] args, DatagramSocket registrationSocket) throws IOException { StringUtils.startupShutdownMessage(Nfs3.class, args, LOG); NfsConfiguration conf = new NfsConfiguration(); @@ -67,8 +67,14 @@ public class Nfs3 extends Nfs3Base { final Nfs3 nfsServer = new Nfs3(conf, registrationSocket, allowInsecurePorts); nfsServer.startServiceInternal(true); + return nfsServer; } - + + public void stop() { + super.stop(); + mountd.stop(); + } + public static void main(String[] args) throws IOException { startService(args, null); } http://git-wip-us.apache.org/repos/asf/hadoop/blob/ecc85620/hadoop-hdfs-project/hadoop-hdfs-nfs/src/main/java/org/apache/hadoop/hdfs/nfs/nfs3/PrivilegedNfsGatewayStarter.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs-nfs/src/main/java/org/apache/hadoop/hdfs/nfs/nfs3/PrivilegedNfsGatewayStarter.java b/hadoop-hdfs-project/hadoop-hdfs-nfs/src/main/java/org/apache/hadoop/hdfs/nfs/nfs3/PrivilegedNfsGatewayStarter.java index 9456caf..e495486 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-nfs/src/main/java/org/apache/hadoop/hdfs/nfs/nfs3/PrivilegedNfsGatewayStarter.java +++ b/hadoop-hdfs-project/hadoop-hdfs-nfs/src/main/java/org/apache/hadoop/hdfs/nfs/nfs3/PrivilegedNfsGatewayStarter.java @@ -40,6 +40,7 @@ public class PrivilegedNfsGatewayStarter implements Daemon { static final Log LOG = LogFactory.getLog(PrivilegedNfsGatewayStarter.class); private String[] args = null; private DatagramSocket registrationSocket = null; + private Nfs3 nfs3Server = null; @Override public void init(DaemonContext context) throws Exception { @@ -68,12 +69,14 @@ public class PrivilegedNfsGatewayStarter implements Daemon { @Override public void start() throws Exception { - Nfs3.startService(args, registrationSocket); + nfs3Server = Nfs3.startService(args, registrationSocket); } @Override public void stop() throws Exception { - // Nothing to do. + if (nfs3Server != null) { + nfs3Server.stop(); + } } @Override --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
