You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by cu...@apache.org on 2006/03/14 21:55:59 UTC

svn commit: r385885 - in /lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs: DFSFileInfo.java FSDirectory.java

Author: cutting
Date: Tue Mar 14 12:55:57 2006
New Revision: 385885

URL: http://svn.apache.org/viewcvs?rev=385885&view=rev
Log:
Fix for HADOOP-79.  Some namenode optimizations.  Contributed by Konstantin Shvachko.

Modified:
    lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/DFSFileInfo.java
    lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/FSDirectory.java

Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/DFSFileInfo.java
URL: http://svn.apache.org/viewcvs/lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/DFSFileInfo.java?rev=385885&r1=385884&r2=385885&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/DFSFileInfo.java (original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/DFSFileInfo.java Tue Mar 14 12:55:57 2006
@@ -45,12 +45,16 @@
     }
 
     /**
+     * Create DFSFileInfo by file INode 
      */
-    public DFSFileInfo(UTF8 path, long len, long contentsLen, boolean isDir) {
-        this.path = path;
-        this.len = len;
-        this.contentsLen = contentsLen;
-        this.isDir = isDir;
+    public DFSFileInfo( FSDirectory.INode node ) {
+        this.path = new UTF8(node.computeName());
+        this.isDir = node.isDir();
+        if( isDir ) {
+          this.len = 0;
+          this.contentsLen = node.computeContentsLength();
+        } else 
+          this.len = this.contentsLen = node.computeFileLength();
     }
 
     /**

Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/FSDirectory.java
URL: http://svn.apache.org/viewcvs/lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/FSDirectory.java?rev=385885&r1=385884&r2=385885&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/FSDirectory.java (original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/FSDirectory.java Tue Mar 14 12:55:57 2006
@@ -59,6 +59,14 @@
         }
 
         /**
+         * Check whether it's a directory
+         * @return
+         */
+        synchronized public boolean isDir() {
+          return (blocks == null);
+        }
+
+        /**
          * This is the external interface
          */
         INode getNode(String target) {
@@ -612,11 +620,7 @@
                 DFSFileInfo listing[] = new DFSFileInfo[contents.size()];
                 int i = 0;
                 for (Iterator it = contents.iterator(); it.hasNext(); i++) {
-                    INode cur = (INode) it.next();
-                    UTF8 curName = new UTF8(cur.computeName());
-                    listing[i] = new DFSFileInfo(curName, cur.computeFileLength(), cur.computeContentsLength(), isDir(curName));
-                    //listing[i] = new DFSFileInfo(curName, cur.computeFileLength(), 0, isDir(curName));
-                    //listing[i] = new DFSFileInfo(curName, cur.computeFileLength(), 0, false);
+                    listing[i] = new DFSFileInfo( (INode) it.next() );
                 }
                 return listing;
             }
@@ -655,16 +659,12 @@
     }
 
     /**
-     * Check whether it's a directory
+     * Check whether the path specifies a directory
      */
     public boolean isDir(UTF8 src) {
         synchronized (rootDir) {
             INode node = rootDir.getNode(normalizePath(src));
-            if (node != null && node.blocks == null) {
-                return true;
-            } else {
-                return false;
-            }
+            return node != null && node.isDir();
         }
     }