From fa08f4633ea2787a485971eed4e2ddc0fe98e7bd Mon Sep 17 00:00:00 2001 From: Hairong Kuang Date: Wed, 17 Nov 2010 05:29:00 +0000 Subject: [PATCH] HADOOP-7013. Add boolean field isCorrupt to BlockLocation. Contributed by Patrick Kling. git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1035923 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES.txt | 3 ++ .../org/apache/hadoop/fs/BlockLocation.java | 42 ++++++++++++++++++- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 2b4c9936a9..09294df287 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -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 diff --git a/src/java/org/apache/hadoop/fs/BlockLocation.java b/src/java/org/apache/hadoop/fs/BlockLocation.java index 7f1feb5581..7a107cf056 100644 --- a/src/java/org/apache/hadoop/fs/BlockLocation.java +++ b/src/java/org/apache/hadoop/fs/BlockLocation.java @@ -50,6 +50,7 @@ public class BlockLocation implements Writable { 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 BlockLocation() { */ 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 BlockLocation(String[] names, String[] hosts, long offset, this.offset = offset; this.length = length; this.topologyPaths = new String[0]; + this.corrupt = corrupt; } /** @@ -83,7 +93,16 @@ public BlockLocation(String[] names, String[] hosts, long offset, */ 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 long getOffset() { public long getLength() { return length; } - + + /** + * Get the corrupt flag. + */ + public boolean isCorrupt() { + return corrupt; + } + /** * Set the start offset of file associated with this block */ @@ -153,6 +179,13 @@ public void setLength(long length) { this.length = length; } + /** + * Set the corrupt flag. + */ + public void setCorrupt(boolean corrupt) { + this.corrupt = corrupt; + } + /** * Set the hosts hosting this block */ @@ -192,6 +225,7 @@ public void setTopologyPaths(String[] topologyPaths) throws IOException { 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 void write(DataOutput out) throws IOException { 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 String toString() { result.append(offset); result.append(','); result.append(length); + if (corrupt) { + result.append("(corrupt)"); + } for(String h: hosts) { result.append(','); result.append(h);