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 sz...@apache.org on 2012/08/16 03:42:18 UTC
svn commit: r1373686 - in
/hadoop/common/branches/branch-2/hadoop-common-project: ./ hadoop-auth/
hadoop-common/ hadoop-common/src/main/docs/ hadoop-common/src/main/java/
hadoop-common/src/main/java/org/apache/hadoop/util/
hadoop-common/src/test/core/ ...
Author: szetszwo
Date: Thu Aug 16 01:42:16 2012
New Revision: 1373686
URL: http://svn.apache.org/viewvc?rev=1373686&view=rev
Log:
svn merge -c 1373683 from trunk for HADOOP-8700. Use enum to define the checksum constants in DataChecksum.
Modified:
hadoop/common/branches/branch-2/hadoop-common-project/ (props changed)
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-auth/ (props changed)
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/ (props changed)
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/CHANGES.txt (contents, props changed)
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/docs/ (props changed)
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/ (props changed)
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/DataChecksum.java
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/core/ (props changed)
hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestDataChecksum.java
Propchange: hadoop/common/branches/branch-2/hadoop-common-project/
------------------------------------------------------------------------------
Merged /hadoop/common/trunk/hadoop-common-project:r1373683
Propchange: hadoop/common/branches/branch-2/hadoop-common-project/hadoop-auth/
------------------------------------------------------------------------------
Merged /hadoop/common/trunk/hadoop-common-project/hadoop-auth:r1373683
Propchange: hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/
------------------------------------------------------------------------------
Merged /hadoop/common/trunk/hadoop-common-project/hadoop-common:r1373683
Modified: hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/CHANGES.txt?rev=1373686&r1=1373685&r2=1373686&view=diff
==============================================================================
--- hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/CHANGES.txt (original)
+++ hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/CHANGES.txt Thu Aug 16 01:42:16 2012
@@ -89,6 +89,9 @@ Release 2.0.1-alpha - UNRELEASED
HADOOP-8278. Make sure components declare correct set of dependencies.
(tomwhite)
+ HADOOP-8700. Use enum to define the checksum constants in DataChecksum.
+ (szetszwo)
+
BUG FIXES
HADOOP-8372. NetUtils.normalizeHostName() incorrectly handles hostname
Propchange: hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/CHANGES.txt
------------------------------------------------------------------------------
Merged /hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt:r1373683
Propchange: hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/docs/
------------------------------------------------------------------------------
Merged /hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/docs:r1373683
Propchange: hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/
------------------------------------------------------------------------------
Merged /hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java:r1373683
Modified: hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/DataChecksum.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/DataChecksum.java?rev=1373686&r1=1373685&r2=1373686&view=diff
==============================================================================
--- hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/DataChecksum.java (original)
+++ hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/DataChecksum.java Thu Aug 16 01:42:16 2012
@@ -43,31 +43,44 @@ public class DataChecksum implements Che
public static final int CHECKSUM_NULL = 0;
public static final int CHECKSUM_CRC32 = 1;
public static final int CHECKSUM_CRC32C = 2;
-
- private static String[] NAMES = new String[] {
- "NULL", "CRC32", "CRC32C"
- };
-
- private static final int CHECKSUM_NULL_SIZE = 0;
- private static final int CHECKSUM_CRC32_SIZE = 4;
- private static final int CHECKSUM_CRC32C_SIZE = 4;
-
-
- public static DataChecksum newDataChecksum( int type, int bytesPerChecksum ) {
+
+ /** The checksum types */
+ public static enum Type {
+ NULL (CHECKSUM_NULL, 0),
+ CRC32 (CHECKSUM_CRC32, 4),
+ CRC32C(CHECKSUM_CRC32C, 4);
+
+ public final int id;
+ public final int size;
+
+ private Type(int id, int size) {
+ this.id = id;
+ this.size = size;
+ }
+
+ /** @return the type corresponding to the id. */
+ public static Type valueOf(int id) {
+ if (id < 0 || id >= values().length) {
+ throw new IllegalArgumentException("id=" + id
+ + " out of range [0, " + values().length + ")");
+ }
+ return values()[id];
+ }
+ }
+
+
+ public static DataChecksum newDataChecksum(Type type, int bytesPerChecksum ) {
if ( bytesPerChecksum <= 0 ) {
return null;
}
switch ( type ) {
- case CHECKSUM_NULL :
- return new DataChecksum( CHECKSUM_NULL, new ChecksumNull(),
- CHECKSUM_NULL_SIZE, bytesPerChecksum );
- case CHECKSUM_CRC32 :
- return new DataChecksum( CHECKSUM_CRC32, new PureJavaCrc32(),
- CHECKSUM_CRC32_SIZE, bytesPerChecksum );
- case CHECKSUM_CRC32C:
- return new DataChecksum( CHECKSUM_CRC32C, new PureJavaCrc32C(),
- CHECKSUM_CRC32C_SIZE, bytesPerChecksum);
+ case NULL :
+ return new DataChecksum(type, new ChecksumNull(), bytesPerChecksum );
+ case CRC32 :
+ return new DataChecksum(type, new PureJavaCrc32(), bytesPerChecksum );
+ case CRC32C:
+ return new DataChecksum(type, new PureJavaCrc32C(), bytesPerChecksum);
default:
return null;
}
@@ -87,7 +100,7 @@ public class DataChecksum implements Che
( (bytes[offset+2] & 0xff) << 16 ) |
( (bytes[offset+3] & 0xff) << 8 ) |
( (bytes[offset+4] & 0xff) );
- return newDataChecksum( bytes[0], bytesPerChecksum );
+ return newDataChecksum( Type.valueOf(bytes[0]), bytesPerChecksum );
}
/**
@@ -98,7 +111,7 @@ public class DataChecksum implements Che
throws IOException {
int type = in.readByte();
int bpc = in.readInt();
- DataChecksum summer = newDataChecksum( type, bpc );
+ DataChecksum summer = newDataChecksum(Type.valueOf(type), bpc );
if ( summer == null ) {
throw new IOException( "Could not create DataChecksum of type " +
type + " with bytesPerChecksum " + bpc );
@@ -111,13 +124,13 @@ public class DataChecksum implements Che
*/
public void writeHeader( DataOutputStream out )
throws IOException {
- out.writeByte( type );
+ out.writeByte( type.id );
out.writeInt( bytesPerChecksum );
}
public byte[] getHeader() {
byte[] header = new byte[DataChecksum.HEADER_LEN];
- header[0] = (byte) (type & 0xff);
+ header[0] = (byte) (type.id & 0xff);
// Writing in buffer just like DataOutput.WriteInt()
header[1+0] = (byte) ((bytesPerChecksum >>> 24) & 0xff);
header[1+1] = (byte) ((bytesPerChecksum >>> 16) & 0xff);
@@ -133,11 +146,11 @@ public class DataChecksum implements Che
*/
public int writeValue( DataOutputStream out, boolean reset )
throws IOException {
- if ( size <= 0 ) {
+ if ( type.size <= 0 ) {
return 0;
}
- if ( size == 4 ) {
+ if ( type.size == 4 ) {
out.writeInt( (int) summer.getValue() );
} else {
throw new IOException( "Unknown Checksum " + type );
@@ -147,7 +160,7 @@ public class DataChecksum implements Che
reset();
}
- return size;
+ return type.size;
}
/**
@@ -157,11 +170,11 @@ public class DataChecksum implements Che
*/
public int writeValue( byte[] buf, int offset, boolean reset )
throws IOException {
- if ( size <= 0 ) {
+ if ( type.size <= 0 ) {
return 0;
}
- if ( size == 4 ) {
+ if ( type.size == 4 ) {
int checksum = (int) summer.getValue();
buf[offset+0] = (byte) ((checksum >>> 24) & 0xff);
buf[offset+1] = (byte) ((checksum >>> 16) & 0xff);
@@ -175,7 +188,7 @@ public class DataChecksum implements Che
reset();
}
- return size;
+ return type.size;
}
/**
@@ -183,36 +196,33 @@ public class DataChecksum implements Che
* @return true if the checksum matches and false otherwise.
*/
public boolean compare( byte buf[], int offset ) {
- if ( size == 4 ) {
+ if ( type.size == 4 ) {
int checksum = ( (buf[offset+0] & 0xff) << 24 ) |
( (buf[offset+1] & 0xff) << 16 ) |
( (buf[offset+2] & 0xff) << 8 ) |
( (buf[offset+3] & 0xff) );
return checksum == (int) summer.getValue();
}
- return size == 0;
+ return type.size == 0;
}
- private final int type;
- private final int size;
+ private final Type type;
private final Checksum summer;
private final int bytesPerChecksum;
private int inSum = 0;
- private DataChecksum( int checksumType, Checksum checksum,
- int sumSize, int chunkSize ) {
- type = checksumType;
+ private DataChecksum( Type type, Checksum checksum, int chunkSize ) {
+ this.type = type;
summer = checksum;
- size = sumSize;
bytesPerChecksum = chunkSize;
}
// Accessors
- public int getChecksumType() {
+ public Type getChecksumType() {
return type;
}
public int getChecksumSize() {
- return size;
+ return type.size;
}
public int getBytesPerChecksum() {
return bytesPerChecksum;
@@ -260,7 +270,7 @@ public class DataChecksum implements Che
public void verifyChunkedSums(ByteBuffer data, ByteBuffer checksums,
String fileName, long basePos)
throws ChecksumException {
- if (size == 0) return;
+ if (type.size == 0) return;
if (data.hasArray() && checksums.hasArray()) {
verifyChunkedSums(
@@ -270,7 +280,7 @@ public class DataChecksum implements Che
return;
}
if (NativeCrc32.isAvailable()) {
- NativeCrc32.verifyChunkedSums(bytesPerChecksum, type, checksums, data,
+ NativeCrc32.verifyChunkedSums(bytesPerChecksum, type.id, checksums, data,
fileName, basePos);
return;
}
@@ -280,7 +290,7 @@ public class DataChecksum implements Che
checksums.mark();
try {
byte[] buf = new byte[bytesPerChecksum];
- byte[] sum = new byte[size];
+ byte[] sum = new byte[type.size];
while (data.remaining() > 0) {
int n = Math.min(data.remaining(), bytesPerChecksum);
checksums.get(sum);
@@ -351,7 +361,7 @@ public class DataChecksum implements Che
* buffer to put the checksums.
*/
public void calculateChunkedSums(ByteBuffer data, ByteBuffer checksums) {
- if (size == 0) return;
+ if (type.size == 0) return;
if (data.hasArray() && checksums.hasArray()) {
calculateChunkedSums(data.array(), data.arrayOffset() + data.position(), data.remaining(),
@@ -411,18 +421,12 @@ public class DataChecksum implements Che
@Override
public int hashCode() {
- return (this.type + 31) * this.bytesPerChecksum;
+ return (this.type.id + 31) * this.bytesPerChecksum;
}
@Override
public String toString() {
- String strType;
- if (type < NAMES.length && type > 0) {
- strType = NAMES[type];
- } else {
- strType = String.valueOf(type);
- }
- return "DataChecksum(type=" + strType +
+ return "DataChecksum(type=" + type +
", chunkSize=" + bytesPerChecksum + ")";
}
Propchange: hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/core/
------------------------------------------------------------------------------
Merged /hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/core:r1373683
Modified: hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestDataChecksum.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestDataChecksum.java?rev=1373686&r1=1373685&r2=1373686&view=diff
==============================================================================
--- hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestDataChecksum.java (original)
+++ hadoop/common/branches/branch-2/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestDataChecksum.java Thu Aug 16 01:42:16 2012
@@ -35,13 +35,13 @@ public class TestDataChecksum {
private static final int DATA_TRAILER_IN_BUFFER = 3;
private static final int BYTES_PER_CHUNK = 512;
- private static final int CHECKSUM_TYPES[] = new int[] {
- DataChecksum.CHECKSUM_CRC32, DataChecksum.CHECKSUM_CRC32C
+ private static final DataChecksum.Type CHECKSUM_TYPES[] = {
+ DataChecksum.Type.CRC32, DataChecksum.Type.CRC32C
};
@Test
public void testBulkOps() throws Exception {
- for (int type : CHECKSUM_TYPES) {
+ for (DataChecksum.Type type : CHECKSUM_TYPES) {
System.err.println(
"---- beginning tests with checksum type " + type + "----");
DataChecksum checksum = DataChecksum.newDataChecksum(
@@ -118,21 +118,20 @@ public class TestDataChecksum {
@Test
public void testEquality() {
assertEquals(
- DataChecksum.newDataChecksum(DataChecksum.CHECKSUM_CRC32, 512),
- DataChecksum.newDataChecksum(DataChecksum.CHECKSUM_CRC32, 512));
+ DataChecksum.newDataChecksum(DataChecksum.Type.CRC32, 512),
+ DataChecksum.newDataChecksum(DataChecksum.Type.CRC32, 512));
assertFalse(
- DataChecksum.newDataChecksum(DataChecksum.CHECKSUM_CRC32, 512).equals(
- DataChecksum.newDataChecksum(DataChecksum.CHECKSUM_CRC32, 1024)));
+ DataChecksum.newDataChecksum(DataChecksum.Type.CRC32, 512).equals(
+ DataChecksum.newDataChecksum(DataChecksum.Type.CRC32, 1024)));
assertFalse(
- DataChecksum.newDataChecksum(DataChecksum.CHECKSUM_CRC32, 512).equals(
- DataChecksum.newDataChecksum(DataChecksum.CHECKSUM_CRC32C, 512)));
+ DataChecksum.newDataChecksum(DataChecksum.Type.CRC32, 512).equals(
+ DataChecksum.newDataChecksum(DataChecksum.Type.CRC32C, 512)));
}
@Test
public void testToString() {
assertEquals("DataChecksum(type=CRC32, chunkSize=512)",
- DataChecksum.newDataChecksum(DataChecksum.CHECKSUM_CRC32, 512)
- .toString());
+ DataChecksum.newDataChecksum(DataChecksum.Type.CRC32, 512).toString());
}
private static void corruptBufferOffset(ByteBuffer buf, int offset) {