From f2eb5d3e6530f7159618560220cbbc612fed0885 Mon Sep 17 00:00:00 2001 From: Albert Lee Date: Thu, 20 Apr 2017 23:54:58 +0800 Subject: [PATCH 3/4] Findbugs notes ThriftServer.java has a var never use, delete this line; --- .../hbase/thrift2/ThriftHBaseServiceHandler.java | 1 + .../thrift2/TestThriftHBaseServiceHandler.java | 41 ++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.java b/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.java index cac141c..6e96b19 100644 --- a/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.java +++ b/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.java @@ -146,6 +146,7 @@ public class ThriftHBaseServiceHandler implements THBaseService.Iface { HTablePool pool = (HTablePool)removal.getValue(); try { pool.close(); + ThriftHBaseServiceHandler.LOG.info("Close HTablePool successed!"); } catch (IOException ex) { ThriftHBaseServiceHandler.LOG.error("Failed to close HTablePool for user=" + (String)removal.getKey(), ex); } diff --git a/hbase-thrift/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.java b/hbase-thrift/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.java index 7a03932..7e0c79d 100644 --- a/hbase-thrift/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.java +++ b/hbase-thrift/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.java @@ -1036,5 +1036,46 @@ public class TestThriftHBaseServiceHandler { increment = incrementFromThrift(tIncrement); assertEquals(increment.getDurability(), Durability.FSYNC_WAL); } + + @Test(timeout = 60 * 1000) + public void testConnectionCacheRefresh() throws Exception { + Configuration conf = UTIL.getConfiguration(); + final int MAX_CACHE_IDLE = 3000; + final int DELAY_MILLIS = 1000; + conf.setInt(ThriftHBaseServiceHandler.CLEANUP_INTERVAL, 100); + + ThriftHBaseServiceHandler handler = + new ThriftHBaseServiceHandler( + conf, UserProvider.instantiate(conf), MAX_CACHE_IDLE); + byte[] rowName = "testAccessWhileCacheExpires".getBytes(); + ByteBuffer table = wrap(tableAname); + List columnValues = new ArrayList(); + columnValues.add(new TColumnValue(wrap(familyAname), wrap(qualifierAname), wrap(valueAname))); + columnValues.add(new TColumnValue(wrap(familyBname), wrap(qualifierBname), wrap(valueBname))); + TPut put = new TPut(wrap(rowName), columnValues); + put.setColumnValues(columnValues); + TGet get = new TGet(wrap(rowName)); + + handler.put(table, put); + TResult result = handler.get(table, get); + assertArrayEquals(rowName, result.getRow()); + List returnedColumnValues = result.getColumnValues(); + assertTColumnValuesEqual(columnValues, returnedColumnValues); + + // Make sure the HConnection cache expires + for (int i = 0; i < 5; i++) { + result = delayedGet(handler, table, get, DELAY_MILLIS); + assertArrayEquals(rowName, result.getRow()); + returnedColumnValues = result.getColumnValues(); + assertTColumnValuesEqual(columnValues, returnedColumnValues); + } + } + + private TResult delayedGet(ThriftHBaseServiceHandler handler, + ByteBuffer table, TGet get, long delayInMillis) throws Exception { + Thread.sleep(delayInMillis); + return handler.get(table, get); + } } + -- 2.4.9 (Apple Git-60)