hadoop-common-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From brando...@apache.org
Subject svn commit: r1540443 - in /hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop: mount/ nfs/nfs3/ oncrpc/ portmap/
Date Sun, 10 Nov 2013 04:07:39 GMT
Author: brandonli
Date: Sun Nov 10 04:07:39 2013
New Revision: 1540443

URL: http://svn.apache.org/r1540443
Log:
HDFS-5469. Add configuration property for the sub-directroy export path. Contributed by Brandon
Li

Modified:
    hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/mount/MountEntry.java
    hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/mount/MountResponse.java
    hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/mount/MountdBase.java
    hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Base.java
    hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Constant.java
    hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/RpcProgram.java
    hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/SimpleTcpServer.java
    hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/SimpleUdpServer.java
    hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/portmap/Portmap.java

Modified: hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/mount/MountEntry.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/mount/MountEntry.java?rev=1540443&r1=1540442&r2=1540443&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/mount/MountEntry.java
(original)
+++ hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/mount/MountEntry.java
Sun Nov 10 04:07:39 2013
@@ -21,9 +21,9 @@ package org.apache.hadoop.mount;
  * Represents a mount entry.
  */
 public class MountEntry {
-  /** Host correspoinding to the mount entry */
+  /** Host corresponding to the mount entry */
   private final String host;
-  /** Path correspoinding to the mount entry */
+  /** Path corresponding to the mount entry */
   private final String path;
 
   public MountEntry(String host, String path) {
@@ -31,11 +31,11 @@ public class MountEntry {
     this.path = path;
   }
 
-  public String host() {
+  public String getHost() {
     return this.host;
   }
 
-  public String path() {
+  public String getPath() {
     return this.path;
   }
 
@@ -49,7 +49,7 @@ public class MountEntry {
     }
 
     MountEntry m = (MountEntry) o;
-    return host().equals(m.host()) && path().equals(m.path());
+    return getHost().equals(m.getHost()) && getPath().equals(m.getPath());
   }
 
   @Override

Modified: hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/mount/MountResponse.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/mount/MountResponse.java?rev=1540443&r1=1540442&r2=1540443&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/mount/MountResponse.java
(original)
+++ hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/mount/MountResponse.java
Sun Nov 10 04:07:39 2013
@@ -54,8 +54,8 @@ public class MountResponse {
     RpcAcceptedReply.getAcceptInstance(xid, new VerifierNone()).write(xdr);
     for (MountEntry mountEntry : mounts) {
       xdr.writeBoolean(true); // Value follows yes
-      xdr.writeString(mountEntry.host());
-      xdr.writeString(mountEntry.path());
+      xdr.writeString(mountEntry.getHost());
+      xdr.writeString(mountEntry.getPath());
     }
     xdr.writeBoolean(false); // Value follows no
     return xdr;

Modified: hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/mount/MountdBase.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/mount/MountdBase.java?rev=1540443&r1=1540442&r2=1540443&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/mount/MountdBase.java
(original)
+++ hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/mount/MountdBase.java
Sun Nov 10 04:07:39 2013
@@ -18,7 +18,6 @@
 package org.apache.hadoop.mount;
 
 import java.io.IOException;
-import java.util.List;
 
 import org.apache.hadoop.oncrpc.RpcProgram;
 import org.apache.hadoop.oncrpc.SimpleTcpServer;
@@ -34,6 +33,8 @@ import org.apache.hadoop.portmap.Portmap
  */
 abstract public class MountdBase {
   private final RpcProgram rpcProgram;
+  private int udpBoundPort; // Will set after server starts
+  private int tcpBoundPort; // Will set after server starts
 
   public RpcProgram getRpcProgram() {
     return rpcProgram;
@@ -41,10 +42,10 @@ abstract public class MountdBase {
   
   /**
    * Constructor
-   * @param exports
+   * @param program
    * @throws IOException 
    */
-  public MountdBase(List<String> exports, RpcProgram program) throws IOException {
+  public MountdBase(RpcProgram program) throws IOException {
     rpcProgram = program;
   }
 
@@ -54,6 +55,7 @@ abstract public class MountdBase {
         rpcProgram, 1);
     rpcProgram.startDaemons();
     udpServer.run();
+    udpBoundPort = udpServer.getBoundPort();
   }
 
   /* Start TCP server */
@@ -62,14 +64,15 @@ abstract public class MountdBase {
         rpcProgram, 1);
     rpcProgram.startDaemons();
     tcpServer.run();
+    tcpBoundPort = tcpServer.getBoundPort();
   }
 
   public void start(boolean register) {
     startUDPServer();
     startTCPServer();
     if (register) {
-      rpcProgram.register(PortmapMapping.TRANSPORT_UDP);
-      rpcProgram.register(PortmapMapping.TRANSPORT_TCP);
+      rpcProgram.register(PortmapMapping.TRANSPORT_UDP, udpBoundPort);
+      rpcProgram.register(PortmapMapping.TRANSPORT_TCP, tcpBoundPort);
     }
   }
 }

Modified: hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Base.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Base.java?rev=1540443&r1=1540442&r2=1540443&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Base.java
(original)
+++ hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Base.java
Sun Nov 10 04:07:39 2013
@@ -33,6 +33,7 @@ public abstract class Nfs3Base {
   public static final Log LOG = LogFactory.getLog(Nfs3Base.class);
   private final RpcProgram rpcProgram;
   private final int nfsPort;
+  private int nfsBoundPort; // Will set after server starts
     
   public RpcProgram getRpcProgram() {
     return rpcProgram;
@@ -40,20 +41,16 @@ public abstract class Nfs3Base {
 
   protected Nfs3Base(RpcProgram rpcProgram, Configuration conf) {
     this.rpcProgram = rpcProgram;
-    this.nfsPort = conf.getInt("nfs3.server.port", Nfs3Constant.PORT);
+    this.nfsPort = conf.getInt(Nfs3Constant.NFS3_SERVER_PORT,
+        Nfs3Constant.NFS3_SERVER_PORT_DEFAULT);
     LOG.info("NFS server port set to: " + nfsPort);
   }
 
-  protected Nfs3Base(RpcProgram rpcProgram) {
-    this.rpcProgram = rpcProgram;
-    this.nfsPort = Nfs3Constant.PORT;
-  }
-
   public void start(boolean register) {
     startTCPServer(); // Start TCP server
     
     if (register) {
-      rpcProgram.register(PortmapMapping.TRANSPORT_TCP);
+      rpcProgram.register(PortmapMapping.TRANSPORT_TCP, nfsBoundPort);
     }
   }
 
@@ -62,5 +59,6 @@ public abstract class Nfs3Base {
         rpcProgram, 0);
     rpcProgram.startDaemons();
     tcpServer.run();
+    nfsBoundPort = tcpServer.getBoundPort();
   }
 }

Modified: hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Constant.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Constant.java?rev=1540443&r1=1540442&r2=1540443&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Constant.java
(original)
+++ hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Constant.java
Sun Nov 10 04:07:39 2013
@@ -26,7 +26,8 @@ public class Nfs3Constant {
   public final static int SUN_RPCBIND = 111;
 
   // The IP port number for NFS.
-  public final static int PORT = 2049;
+  public final static String NFS3_SERVER_PORT = "nfs3.server.port";
+  public final static int NFS3_SERVER_PORT_DEFAULT = 2049;
 
   // The RPC program number for NFS.
   public final static int PROGRAM = 100003;
@@ -213,4 +214,7 @@ public class Nfs3Constant {
   
   public final static String UNKNOWN_USER = "nobody";
   public final static String UNKNOWN_GROUP = "nobody";
+  
+  public final static String EXPORT_POINT = "dfs.nfs3.export.point";
+  public final static String EXPORT_POINT_DEFAULT = "/";
 }

Modified: hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/RpcProgram.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/RpcProgram.java?rev=1540443&r1=1540442&r2=1540443&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/RpcProgram.java
(original)
+++ hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/RpcProgram.java
Sun Nov 10 04:07:39 2013
@@ -40,7 +40,7 @@ public abstract class RpcProgram extends
   public static final int RPCB_PORT = 111;
   private final String program;
   private final String host;
-  private final int port;
+  private int port; // Ephemeral port is chosen later
   private final int progNumber;
   private final int lowProgVersion;
   private final int highProgVersion;
@@ -68,23 +68,21 @@ public abstract class RpcProgram extends
   /**
    * Register this program with the local portmapper.
    */
-  public void register(int transport) {
+  public void register(int transport, int boundPort) {
+    if (boundPort != port) {
+      LOG.info("The bound port is " + boundPort
+          + ", different with configured port " + port);
+      port = boundPort;
+    }
     // Register all the program versions with portmapper for a given transport
     for (int vers = lowProgVersion; vers <= highProgVersion; vers++) {
-      register(vers, transport);
+      PortmapMapping mapEntry = new PortmapMapping(progNumber, vers, transport,
+          port);
+      register(mapEntry);
     }
   }
   
   /**
-   * Register this program with the local portmapper.
-   */
-  private void register(int progVersion, int transport) {
-    PortmapMapping mapEntry = new PortmapMapping(progNumber, progVersion,
-        transport, port);
-    register(mapEntry);
-  }
-  
-  /**
    * Register the program with Portmap or Rpcbind
    */
   protected void register(PortmapMapping mapEntry) {

Modified: hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/SimpleTcpServer.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/SimpleTcpServer.java?rev=1540443&r1=1540442&r2=1540443&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/SimpleTcpServer.java
(original)
+++ hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/SimpleTcpServer.java
Sun Nov 10 04:07:39 2013
@@ -23,6 +23,7 @@ import java.util.concurrent.Executors;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.jboss.netty.bootstrap.ServerBootstrap;
+import org.jboss.netty.channel.Channel;
 import org.jboss.netty.channel.ChannelFactory;
 import org.jboss.netty.channel.ChannelPipeline;
 import org.jboss.netty.channel.ChannelPipelineFactory;
@@ -36,6 +37,7 @@ import org.jboss.netty.channel.socket.ni
 public class SimpleTcpServer {
   public static final Log LOG = LogFactory.getLog(SimpleTcpServer.class);
   protected final int port;
+  protected int boundPort = -1; // Will be set after server starts
   protected final SimpleChannelUpstreamHandler rpcProgram;
   
   /** The maximum number of I/O worker threads */
@@ -79,9 +81,16 @@ public class SimpleTcpServer {
     bootstrap.setOption("child.keepAlive", true);
     
     // Listen to TCP port
-    bootstrap.bind(new InetSocketAddress(port));
-
-    LOG.info("Started listening to TCP requests at port " + port + " for "
+    Channel ch = bootstrap.bind(new InetSocketAddress(port));
+    InetSocketAddress socketAddr = (InetSocketAddress) ch.getLocalAddress();
+    boundPort = socketAddr.getPort();
+    
+    LOG.info("Started listening to TCP requests at port " + boundPort + " for "
         + rpcProgram + " with workerCount " + workerCount);
   }
+  
+  // boundPort will be set only after server starts
+  public int getBoundPort() {
+    return this.boundPort;
+  }
 }

Modified: hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/SimpleUdpServer.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/SimpleUdpServer.java?rev=1540443&r1=1540442&r2=1540443&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/SimpleUdpServer.java
(original)
+++ hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/SimpleUdpServer.java
Sun Nov 10 04:07:39 2013
@@ -23,6 +23,7 @@ import java.util.concurrent.Executors;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.jboss.netty.bootstrap.ConnectionlessBootstrap;
+import org.jboss.netty.channel.Channel;
 import org.jboss.netty.channel.Channels;
 import org.jboss.netty.channel.SimpleChannelUpstreamHandler;
 import org.jboss.netty.channel.socket.DatagramChannelFactory;
@@ -39,6 +40,7 @@ public class SimpleUdpServer {
   protected final int port;
   protected final SimpleChannelUpstreamHandler rpcProgram;
   protected final int workerCount;
+  protected int boundPort = -1; // Will be set after server starts
 
   public SimpleUdpServer(int port, SimpleChannelUpstreamHandler program, int workerCount)
{
     this.port = port;
@@ -61,9 +63,16 @@ public class SimpleUdpServer {
     b.setOption("receiveBufferSize", RECEIVE_BUFFER_SIZE);
     
     // Listen to the UDP port
-    b.bind(new InetSocketAddress(port));
-
-    LOG.info("Started listening to UDP requests at port " + port + " for "
+    Channel ch = b.bind(new InetSocketAddress(port));
+    InetSocketAddress socketAddr = (InetSocketAddress) ch.getLocalAddress();
+    boundPort = socketAddr.getPort();
+    
+    LOG.info("Started listening to UDP requests at port " + boundPort + " for "
         + rpcProgram + " with workerCount " + workerCount);
   }
+
+  // boundPort will be set only after server starts
+  public int getBoundPort() {
+    return this.boundPort;
+  }
 }

Modified: hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/portmap/Portmap.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/portmap/Portmap.java?rev=1540443&r1=1540442&r2=1540443&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/portmap/Portmap.java
(original)
+++ hadoop/common/trunk/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/portmap/Portmap.java
Sun Nov 10 04:07:39 2013
@@ -31,14 +31,14 @@ public class Portmap {
   public static final Log LOG = LogFactory.getLog(Portmap.class);
 
   private static void startUDPServer(RpcProgramPortmap rpcProgram) {
-    rpcProgram.register(PortmapMapping.TRANSPORT_UDP);
+    rpcProgram.register(PortmapMapping.TRANSPORT_UDP, RpcProgram.RPCB_PORT);
     SimpleUdpServer udpServer = new SimpleUdpServer(RpcProgram.RPCB_PORT,
         rpcProgram, 1);
     udpServer.run();
   }
 
   private static void startTCPServer(final RpcProgramPortmap rpcProgram) {
-    rpcProgram.register(PortmapMapping.TRANSPORT_TCP);
+    rpcProgram.register(PortmapMapping.TRANSPORT_TCP, RpcProgram.RPCB_PORT);
     SimpleTcpServer tcpServer = new SimpleTcpServer(RpcProgram.RPCB_PORT,
         rpcProgram, 1);
     tcpServer.run();



Mime
View raw message