HDFS-12339. NFS Gateway on Shutdown Gives Unregistration Failure. Does Not Unregister with rpcbind Portmapper. Contributed by Mukul Kumar Singh.
This commit is contained in:
parent
40ef9fa171
commit
ecc85620e8
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue