Author: hairong
Date: Wed Nov 17 05:29:00 2010
New Revision: 1035923

URL: http://svn.apache.org/viewvc?rev=1035923&view=rev
Log:
HADOOP-7013. Add boolean field isCorrupt to BlockLocation. Contributed by 
Patrick Kling.

Modified:
    hadoop/common/trunk/CHANGES.txt
    hadoop/common/trunk/src/java/org/apache/hadoop/fs/BlockLocation.java

Modified: hadoop/common/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/hadoop/common/trunk/CHANGES.txt?rev=1035923&r1=1035922&r2=1035923&view=diff
==============================================================================
--- hadoop/common/trunk/CHANGES.txt (original)
+++ hadoop/common/trunk/CHANGES.txt Wed Nov 17 05:29:00 2010
@@ -38,6 +38,9 @@ Trunk (unreleased changes)
     HADOOP-6996. Allow CodecFactory to return a codec object given a codec'
     class name. (hairong)
 
+    HADOOP-7013. Add boolean field isCorrupt to BlockLocation. 
+    (Patrick Kling via hairong)
+
   IMPROVEMENTS
 
     HADOOP-6644. util.Shell getGROUPS_FOR_USER_COMMAND method name 

Modified: hadoop/common/trunk/src/java/org/apache/hadoop/fs/BlockLocation.java
URL: 
http://svn.apache.org/viewvc/hadoop/common/trunk/src/java/org/apache/hadoop/fs/BlockLocation.java?rev=1035923&r1=1035922&r2=1035923&view=diff
==============================================================================
--- hadoop/common/trunk/src/java/org/apache/hadoop/fs/BlockLocation.java 
(original)
+++ hadoop/common/trunk/src/java/org/apache/hadoop/fs/BlockLocation.java Wed 
Nov 17 05:29:00 2010
@@ -50,6 +50,7 @@ public class BlockLocation implements Wr
   private String[] topologyPaths; // full path name in network topology
   private long offset;  //offset of the of the block in the file
   private long length;
+  private boolean corrupt;
 
   /**
    * Default Constructor
@@ -63,6 +64,14 @@ public class BlockLocation implements Wr
    */
   public BlockLocation(String[] names, String[] hosts, long offset, 
                        long length) {
+    this(names, hosts, offset, length, false);
+  }
+
+  /**
+   * Constructor with host, name, offset, length and corrupt flag
+   */
+  public BlockLocation(String[] names, String[] hosts, long offset, 
+                       long length, boolean corrupt) {
     if (names == null) {
       this.names = new String[0];
     } else {
@@ -76,6 +85,7 @@ public class BlockLocation implements Wr
     this.offset = offset;
     this.length = length;
     this.topologyPaths = new String[0];
+    this.corrupt = corrupt;
   }
 
   /**
@@ -83,7 +93,16 @@ public class BlockLocation implements Wr
    */
   public BlockLocation(String[] names, String[] hosts, String[] topologyPaths,
                        long offset, long length) {
-    this(names, hosts, offset, length);
+    this(names, hosts, topologyPaths, offset, length, false);
+  }
+
+  /**
+   * Constructor with host, name, network topology, offset, length 
+   * and corrupt flag
+   */
+  public BlockLocation(String[] names, String[] hosts, String[] topologyPaths,
+                       long offset, long length, boolean corrupt) {
+    this(names, hosts, offset, length, corrupt);
     if (topologyPaths == null) {
       this.topologyPaths = new String[0];
     } else {
@@ -138,7 +157,14 @@ public class BlockLocation implements Wr
   public long getLength() {
     return length;
   }
-  
+
+  /**
+   * Get the corrupt flag.
+   */
+  public boolean isCorrupt() {
+    return corrupt;
+  }
+
   /**
    * Set the start offset of file associated with this block
    */
@@ -154,6 +180,13 @@ public class BlockLocation implements Wr
   }
 
   /**
+   * Set the corrupt flag.
+   */
+  public void setCorrupt(boolean corrupt) {
+    this.corrupt = corrupt;
+  }
+
+  /**
    * Set the hosts hosting this block
    */
   public void setHosts(String[] hosts) throws IOException {
@@ -192,6 +225,7 @@ public class BlockLocation implements Wr
   public void write(DataOutput out) throws IOException {
     out.writeLong(offset);
     out.writeLong(length);
+    out.writeBoolean(corrupt);
     out.writeInt(names.length);
     for (int i=0; i < names.length; i++) {
       Text name = new Text(names[i]);
@@ -215,6 +249,7 @@ public class BlockLocation implements Wr
   public void readFields(DataInput in) throws IOException {
     this.offset = in.readLong();
     this.length = in.readLong();
+    this.corrupt = in.readBoolean();
     int numNames = in.readInt();
     this.names = new String[numNames];
     for (int i = 0; i < numNames; i++) {
@@ -245,6 +280,9 @@ public class BlockLocation implements Wr
     result.append(offset);
     result.append(',');
     result.append(length);
+    if (corrupt) {
+      result.append("(corrupt)");
+    }
     for(String h: hosts) {
       result.append(',');
       result.append(h);


Reply via email to