Return-Path: Delivered-To: apmail-hadoop-hbase-commits-archive@minotaur.apache.org Received: (qmail 13942 invoked from network); 12 Mar 2010 20:55:31 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 12 Mar 2010 20:55:31 -0000 Received: (qmail 63278 invoked by uid 500); 12 Mar 2010 20:54:53 -0000 Delivered-To: apmail-hadoop-hbase-commits-archive@hadoop.apache.org Received: (qmail 63210 invoked by uid 500); 12 Mar 2010 20:54:53 -0000 Mailing-List: contact hbase-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: hbase-dev@hadoop.apache.org Delivered-To: mailing list hbase-commits@hadoop.apache.org Received: (qmail 63203 invoked by uid 99); 12 Mar 2010 20:54:53 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 12 Mar 2010 20:54:53 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 12 Mar 2010 20:54:50 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id EC000238897A; Fri, 12 Mar 2010 20:54:28 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r922424 - in /hadoop/hbase/branches/0.20: ./ src/contrib/transactional/src/java/org/apache/hadoop/hbase/client/transactional/ src/contrib/transactional/src/java/org/apache/hadoop/hbase/regionserver/transactional/ src/java/org/apache/hadoop/... Date: Fri, 12 Mar 2010 20:54:28 -0000 To: hbase-commits@hadoop.apache.org From: stack@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100312205428.EC000238897A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: stack Date: Fri Mar 12 20:54:28 2010 New Revision: 922424 URL: http://svn.apache.org/viewvc?rev=922424&view=rev Log: HBASE-2219 stop using code mapping for method names in the RPC Modified: hadoop/hbase/branches/0.20/CHANGES.txt hadoop/hbase/branches/0.20/src/contrib/transactional/src/java/org/apache/hadoop/hbase/client/transactional/TransactionManager.java hadoop/hbase/branches/0.20/src/contrib/transactional/src/java/org/apache/hadoop/hbase/client/transactional/TransactionalTable.java hadoop/hbase/branches/0.20/src/contrib/transactional/src/java/org/apache/hadoop/hbase/regionserver/transactional/TransactionalRegionServer.java hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/ipc/HBaseRPC.java hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/ipc/HBaseRpcMetrics.java Modified: hadoop/hbase/branches/0.20/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20/CHANGES.txt?rev=922424&r1=922423&r2=922424&view=diff ============================================================================== --- hadoop/hbase/branches/0.20/CHANGES.txt (original) +++ hadoop/hbase/branches/0.20/CHANGES.txt Fri Mar 12 20:54:28 2010 @@ -2,7 +2,8 @@ HBase Change Log Release 0.20.4 - Unreleased INCOMPATIBLE CHANGES - + HBASE-2219 Stop using code mapping for method names in the RPC + (Ryan Rawson via Stack) BUG FIXES HBASE-2173 New idx javadoc not included with the rest HBASE-2199 hbase.client.tableindexed.IndexSpecification, Modified: hadoop/hbase/branches/0.20/src/contrib/transactional/src/java/org/apache/hadoop/hbase/client/transactional/TransactionManager.java URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20/src/contrib/transactional/src/java/org/apache/hadoop/hbase/client/transactional/TransactionManager.java?rev=922424&r1=922423&r2=922424&view=diff ============================================================================== --- hadoop/hbase/branches/0.20/src/contrib/transactional/src/java/org/apache/hadoop/hbase/client/transactional/TransactionManager.java (original) +++ hadoop/hbase/branches/0.20/src/contrib/transactional/src/java/org/apache/hadoop/hbase/client/transactional/TransactionManager.java Fri Mar 12 20:54:28 2010 @@ -36,10 +36,6 @@ import org.apache.hadoop.hbase.ipc.Trans * */ public class TransactionManager { - static { - TransactionalRPC.initialize(); - } - static final Log LOG = LogFactory.getLog(TransactionManager.class); private final HConnection connection; Modified: hadoop/hbase/branches/0.20/src/contrib/transactional/src/java/org/apache/hadoop/hbase/client/transactional/TransactionalTable.java URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20/src/contrib/transactional/src/java/org/apache/hadoop/hbase/client/transactional/TransactionalTable.java?rev=922424&r1=922423&r2=922424&view=diff ============================================================================== --- hadoop/hbase/branches/0.20/src/contrib/transactional/src/java/org/apache/hadoop/hbase/client/transactional/TransactionalTable.java (original) +++ hadoop/hbase/branches/0.20/src/contrib/transactional/src/java/org/apache/hadoop/hbase/client/transactional/TransactionalTable.java Fri Mar 12 20:54:28 2010 @@ -42,10 +42,6 @@ import org.apache.hadoop.hbase.util.Byte */ public class TransactionalTable extends HTable { - static { - TransactionalRPC.initialize(); - } - /** * @param conf * @param tableName Modified: hadoop/hbase/branches/0.20/src/contrib/transactional/src/java/org/apache/hadoop/hbase/regionserver/transactional/TransactionalRegionServer.java URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20/src/contrib/transactional/src/java/org/apache/hadoop/hbase/regionserver/transactional/TransactionalRegionServer.java?rev=922424&r1=922423&r2=922424&view=diff ============================================================================== --- hadoop/hbase/branches/0.20/src/contrib/transactional/src/java/org/apache/hadoop/hbase/regionserver/transactional/TransactionalRegionServer.java (original) +++ hadoop/hbase/branches/0.20/src/contrib/transactional/src/java/org/apache/hadoop/hbase/regionserver/transactional/TransactionalRegionServer.java Fri Mar 12 20:54:28 2010 @@ -36,7 +36,6 @@ import org.apache.hadoop.hbase.client.Ge import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.Scan; -import org.apache.hadoop.hbase.client.transactional.TransactionalRPC; import org.apache.hadoop.hbase.ipc.HBaseRPCProtocolVersion; import org.apache.hadoop.hbase.ipc.TransactionalRegionInterface; import org.apache.hadoop.hbase.regionserver.HLog; @@ -54,10 +53,6 @@ import org.apache.hadoop.util.Progressab */ public class TransactionalRegionServer extends HRegionServer implements TransactionalRegionInterface { - - static { - TransactionalRPC.initialize(); - } private static final String LEASE_TIME = "hbase.transaction.leasetime"; private static final int DEFAULT_LEASE_TIME = 60 * 1000; Modified: hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/ipc/HBaseRPC.java URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/ipc/HBaseRPC.java?rev=922424&r1=922423&r2=922424&view=diff ============================================================================== --- hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/ipc/HBaseRPC.java (original) +++ hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/ipc/HBaseRPC.java Fri Mar 12 20:54:28 2010 @@ -85,59 +85,8 @@ public class HBaseRPC { super(); } // no public ctor - // Special code that means 'not-encoded'. - private static final byte NOT_ENCODED = 0; - private static byte code = NOT_ENCODED + 1; - - /** Add a new interface to the ipc map. - * @param c Class whose methods we'll add to the map of methods to codes - * (and vice versa). - * @param startCode Current state of the byte code. - * @return State of code when this method is done. - */ - public static byte addToMap(final Class c, final byte startCode) { - if (Invocation.CODE_TO_METHODNAME.get(startCode) != null) { - throw new IllegalArgumentException("Code " + startCode + - "already had entry"); - } - byte localCode = startCode; - Method [] methods = c.getMethods(); - // There are no guarantees about the order in which items are returned in - // so do a sort (Was seeing that sort was one way on one server and then - // another on different server). - Arrays.sort(methods, new Comparator() { - public int compare(Method left, Method right) { - return left.getName().compareTo(right.getName()); - } - }); - for (int i = 0; i < methods.length; i++) { - Invocation.addToMap(methods[i].getName(), localCode++); - } - return localCode; - } - - static Collection getMappedMethodNames() { - return Invocation.CODE_TO_METHODNAME.values(); - } - - static { - code = HBaseRPC.addToMap(VersionedProtocol.class, code); - code = HBaseRPC.addToMap(HMasterInterface.class, code); - code = HBaseRPC.addToMap(HMasterRegionInterface.class, code); - code = HBaseRPC.addToMap(HRegionInterface.class, code); - } - /** A method invocation, including the method name and its parameters.*/ private static class Invocation implements Writable, Configurable { - // Here, for hbase, we maintain two static maps of method names to code and - // vice versa. - static final Map CODE_TO_METHODNAME = - new HashMap(); - private static final Map METHODNAME_TO_CODE = - new HashMap(); - - // End of hbase modifications. - private String methodName; @SuppressWarnings("unchecked") private Class[] parameterClasses; @@ -170,8 +119,7 @@ public class HBaseRPC { public Object[] getParameters() { return parameters; } public void readFields(DataInput in) throws IOException { - byte code = in.readByte(); - methodName = CODE_TO_METHODNAME.get(Byte.valueOf(code)); + methodName = in.readUTF(); parameters = new Object[in.readInt()]; parameterClasses = new Class[parameters.length]; HbaseObjectWritable objectWritable = new HbaseObjectWritable(); @@ -183,7 +131,7 @@ public class HBaseRPC { } public void write(DataOutput out) throws IOException { - writeMethodNameCode(out, this.methodName); + out.writeUTF(this.methodName); out.writeInt(parameterClasses.length); for (int i = 0; i < parameterClasses.length; i++) { HbaseObjectWritable.writeObject(out, parameters[i], parameterClasses[i], @@ -212,34 +160,6 @@ public class HBaseRPC { public Configuration getConf() { return this.conf; } - - // Hbase additions. - static void addToMap(final String name, final byte code) { - if (METHODNAME_TO_CODE.containsKey(name)) { - return; - } - METHODNAME_TO_CODE.put(name, Byte.valueOf(code)); - CODE_TO_METHODNAME.put(Byte.valueOf(code), name); - } - - - /* - * Write out the code byte for passed Class. - * @param out - * @param c - * @throws IOException - */ - static void writeMethodNameCode(final DataOutput out, final String methodname) - throws IOException { - Byte code = METHODNAME_TO_CODE.get(methodname); - if (code == null) { - LOG.error("Unsupported type " + methodname); - throw new UnsupportedOperationException("No code for unexpected " + - methodname); - } - out.writeByte(code.byteValue()); - } - // End of hbase additions. } /* Cache a client using its socket factory as the hash key */ Modified: hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/ipc/HBaseRpcMetrics.java URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/ipc/HBaseRpcMetrics.java?rev=922424&r1=922423&r2=922424&view=diff ============================================================================== --- hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/ipc/HBaseRpcMetrics.java (original) +++ hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/ipc/HBaseRpcMetrics.java Fri Mar 12 20:54:28 2010 @@ -54,7 +54,6 @@ public class HBaseRpcMetrics implements context.registerUpdater(this); - this.initMethods(); rpcStatistics = new HBaseRPCStatistics(this.registry, hostName, port); } @@ -71,16 +70,6 @@ public class HBaseRpcMetrics implements //public Map metricsList = Collections.synchronizedMap(new HashMap()); - /** - * Register metrics for all know RPC methods ahead of time. This helps with - * JMX usage, where trying to retrieve the RPC-method metrics before they're - * incremented could otherwise cause spurious AttributeNotFoundExceptions. - */ - private void initMethods() { - for (String name : HBaseRPC.getMappedMethodNames()) { - create(name); - } - } private MetricsTimeVaryingRate get(String key) { return (MetricsTimeVaryingRate) registry.get(key);