Author: jing9 Date: Tue Aug 6 18:17:58 2013 New Revision: 1511058 URL: http://svn.apache.org/r1511058 Log: HADOOP-9821. ClientId should have getMsb/getLsb methods. Contributed by Tsuyoshi OZAWA.
Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/ClientId.java hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/RetryCache.java Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt?rev=1511058&r1=1511057&r2=1511058&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt (original) +++ hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt Tue Aug 6 18:17:58 2013 @@ -331,6 +331,9 @@ Release 2.1.1-beta - UNRELEASED HADOOP-9803. Add a generic type parameter to RetryInvocationHandler. (szetszwo) + HADOOP-9821. ClientId should have getMsb/getLsb methods. + (Tsuyoshi OZAWA via jing9) + OPTIMIZATIONS BUG FIXES Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/ClientId.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/ClientId.java?rev=1511058&r1=1511057&r2=1511058&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/ClientId.java (original) +++ hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/ClientId.java Tue Aug 6 18:17:58 2013 @@ -33,6 +33,7 @@ public class ClientId { /** The byte array of a UUID should be 16 */ public static final int BYTE_LENGTH = 16; + private static final int shiftWidth = 8; /** * Return clientId as byte[] @@ -53,15 +54,25 @@ public class ClientId { } // otherwise should be 16 bytes Preconditions.checkArgument(clientId.length == BYTE_LENGTH); + long msb = getMsb(clientId); + long lsb = getLsb(clientId); + return (new UUID(msb, lsb)).toString(); + } + + public static long getMsb(byte[] clientId) { long msb = 0; - long lsb = 0; - for (int i = 0; i < 8; i++) { - msb = (msb << 8) | (clientId[i] & 0xff); + for (int i = 0; i < BYTE_LENGTH/2; i++) { + msb = (msb << shiftWidth) | (clientId[i] & 0xff); } - for (int i = 8; i < 16; i++) { - lsb = (lsb << 8) | (clientId[i] & 0xff); + return msb; + } + + public static long getLsb(byte[] clientId) { + long lsb = 0; + for (int i = BYTE_LENGTH/2; i < BYTE_LENGTH; i++) { + lsb = (lsb << shiftWidth) | (clientId[i] & 0xff); } - return (new UUID(msb, lsb)).toString(); + return lsb; } /** Convert from clientId string byte[] representation of clientId */ Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/RetryCache.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/RetryCache.java?rev=1511058&r1=1511057&r2=1511058&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/RetryCache.java (original) +++ hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/RetryCache.java Tue Aug 6 18:17:58 2013 @@ -70,16 +70,8 @@ public class RetryCache { "Invalid clientId - length is " + clientId.length + " expected length " + ClientId.BYTE_LENGTH); // Convert UUID bytes to two longs - long tmp = 0; - for (int i=0; i<8; i++) { - tmp = (tmp << 8) | (clientId[i] & 0xff); - } - clientIdMsb = tmp; - tmp = 0; - for (int i=8; i<16; i++) { - tmp = (tmp << 8) | (clientId[i] & 0xff); - } - clientIdLsb = tmp; + clientIdMsb = ClientId.getMsb(clientId); + clientIdLsb = ClientId.getLsb(clientId); this.callId = callId; this.expirationTime = expirationTime; }