Author: stack Date: Tue Apr 27 04:16:09 2010 New Revision: 938318 URL: http://svn.apache.org/viewvc?rev=938318&view=rev Log: HBASE-2393 ThriftServer instantiates a new HTable per request
Modified: hadoop/hbase/branches/0.20/CHANGES.txt hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/thrift/ThriftServer.java Modified: hadoop/hbase/branches/0.20/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20/CHANGES.txt?rev=938318&r1=938317&r2=938318&view=diff ============================================================================== --- hadoop/hbase/branches/0.20/CHANGES.txt (original) +++ hadoop/hbase/branches/0.20/CHANGES.txt Tue Apr 27 04:16:09 2010 @@ -164,6 +164,8 @@ Release 0.20.4 - Unreleased is a prefix (Todd Lipcon via Stack) HBASE-2488 Master should warn more loudly about unexpected events (Todd Lipcon via Stack) + HBASE-2393 ThriftServer instantiates a new HTable per request + (Bogdan DRAGU via Stack) NEW FEATURES HBASE-2257 [stargate] multiuser mode Modified: hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/thrift/ThriftServer.java URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/thrift/ThriftServer.java?rev=938318&r1=938317&r2=938318&view=diff ============================================================================== --- hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/thrift/ThriftServer.java (original) +++ hadoop/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/thrift/ThriftServer.java Tue Apr 27 04:16:09 2010 @@ -87,6 +87,14 @@ public class ThriftServer { protected int nextScannerId = 0; protected HashMap<Integer, ResultScanner> scannerMap = null; + private static ThreadLocal<Map<String, HTable>> threadLocalTables = new ThreadLocal<Map<String, HTable>>() { + @Override + protected Map<String, HTable> initialValue() { + return new TreeMap<String, HTable>(); + } + + }; + /** * Returns a list of all the column families for a given htable. * @@ -114,7 +122,12 @@ public class ThriftServer { */ protected HTable getTable(final byte[] tableName) throws IOError, IOException { - return new HTable(this.conf, tableName); + String table = new String(tableName); + Map<String, HTable> tables = threadLocalTables.get(); + if (!tables.containsKey(table)) { + tables.put(table, new HTable(conf, tableName)); + } + return tables.get(table); } /**