Modified: hadoop/hbase/branches/0.20_on_hadoop-0.18.3/src/test/org/apache/hadoop/hbase/regionserver/TestStoreScanner.java URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20_on_hadoop-0.18.3/src/test/org/apache/hadoop/hbase/regionserver/TestStoreScanner.java?rev=884310&r1=884309&r2=884310&view=diff ============================================================================== --- hadoop/hbase/branches/0.20_on_hadoop-0.18.3/src/test/org/apache/hadoop/hbase/regionserver/TestStoreScanner.java (original) +++ hadoop/hbase/branches/0.20_on_hadoop-0.18.3/src/test/org/apache/hadoop/hbase/regionserver/TestStoreScanner.java Wed Nov 25 22:30:29 2009 @@ -354,4 +354,46 @@ results.clear(); assertEquals(false, scan.next(results)); } + + /** + * Test expiration of KeyValues in combination with a configured TTL for + * a column family (as should be triggered in a major compaction). + */ + public void testWildCardTtlScan() throws IOException { + long now = System.currentTimeMillis(); + KeyValue [] kvs = new KeyValue[] { + KeyValueTestUtil.create("R1", "cf", "a", now-1000, KeyValue.Type.Put, "dont-care"), + KeyValueTestUtil.create("R1", "cf", "b", now-10, KeyValue.Type.Put, "dont-care"), + KeyValueTestUtil.create("R1", "cf", "c", now-200, KeyValue.Type.Put, "dont-care"), + KeyValueTestUtil.create("R1", "cf", "d", now-10000, KeyValue.Type.Put, "dont-care"), + KeyValueTestUtil.create("R2", "cf", "a", now, KeyValue.Type.Put, "dont-care"), + KeyValueTestUtil.create("R2", "cf", "b", now-10, KeyValue.Type.Put, "dont-care"), + KeyValueTestUtil.create("R2", "cf", "c", now-200, KeyValue.Type.Put, "dont-care"), + KeyValueTestUtil.create("R2", "cf", "c", now-1000, KeyValue.Type.Put, "dont-care") + }; + KeyValueScanner [] scanners = new KeyValueScanner[] { + new KeyValueScanFixture(KeyValue.COMPARATOR, kvs) + }; + Scan scan = new Scan(); + scan.setMaxVersions(1); + StoreScanner scanner = + new StoreScanner(scan, CF, 500, KeyValue.COMPARATOR, + null, scanners); + + List<KeyValue> results = new ArrayList<KeyValue>(); + assertEquals(true, scanner.next(results)); + assertEquals(2, results.size()); + assertEquals(kvs[1], results.get(0)); + assertEquals(kvs[2], results.get(1)); + results.clear(); + + assertEquals(true, scanner.next(results)); + assertEquals(3, results.size()); + assertEquals(kvs[4], results.get(0)); + assertEquals(kvs[5], results.get(1)); + assertEquals(kvs[6], results.get(2)); + results.clear(); + + assertEquals(false, scanner.next(results)); + } }
Modified: hadoop/hbase/branches/0.20_on_hadoop-0.18.3/src/test/org/apache/hadoop/hbase/regionserver/TestWildcardColumnTracker.java URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20_on_hadoop-0.18.3/src/test/org/apache/hadoop/hbase/regionserver/TestWildcardColumnTracker.java?rev=884310&r1=884309&r2=884310&view=diff ============================================================================== --- hadoop/hbase/branches/0.20_on_hadoop-0.18.3/src/test/org/apache/hadoop/hbase/regionserver/TestWildcardColumnTracker.java (original) +++ hadoop/hbase/branches/0.20_on_hadoop-0.18.3/src/test/org/apache/hadoop/hbase/regionserver/TestWildcardColumnTracker.java Wed Nov 25 22:30:29 2009 @@ -330,6 +330,23 @@ } } } + + // HBASE-1781 + public void testStackOverflow(){ + int maxVersions = 1; + + ColumnTracker wild = new WildcardColumnTracker(maxVersions); + for(int i = 0; i < 100000; i+=2) { + byte [] col = Bytes.toBytes("col"+i); + wild.checkColumn(col, 0, col.length); + } + wild.update(); + + for(int i = 1; i < 100000; i+=2) { + byte [] col = Bytes.toBytes("col"+i); + wild.checkColumn(col, 0, col.length); + } + } Modified: hadoop/hbase/branches/0.20_on_hadoop-0.18.3/src/webapps/master/table.jsp URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.20_on_hadoop-0.18.3/src/webapps/master/table.jsp?rev=884310&r1=884309&r2=884310&view=diff ============================================================================== --- hadoop/hbase/branches/0.20_on_hadoop-0.18.3/src/webapps/master/table.jsp (original) +++ hadoop/hbase/branches/0.20_on_hadoop-0.18.3/src/webapps/master/table.jsp Wed Nov 25 22:30:29 2009 @@ -110,7 +110,7 @@ <tr> <td><%= Bytes.toString(meta.getRegionName()) %></td> <td><a href="<%= url %>"><%= meta.getServer().getHostname().toString() + ":" + infoPort %></a></td> - <td>-</td><td><%= Bytes.toString(meta.getStartKey()) %></td><td>-</td> + <td>-</td><td><%= Bytes.toString(meta.getStartKey()) %></td><td><%= Bytes.toString(meta.getEndKey()) %></td> </tr> <% } %> </table> @@ -131,15 +131,11 @@ int infoPort = serverAddressToServerInfos.get( hriEntry.getValue()).getInfoPort(); - String urlRegionHistorian = - "/regionhistorian.jsp?regionname="+ - Bytes.toStringBinary(hriEntry.getKey().getRegionName()); - String urlRegionServer = "http://" + hriEntry.getValue().getHostname().toString() + ":" + infoPort + "/"; %> <tr> - <td><a href="<%= urlRegionHistorian %>"><%= Bytes.toStringBinary(hriEntry.getKey().getRegionName())%></a></td> + <td><%= Bytes.toStringBinary(hriEntry.getKey().getRegionName())%></td> <td><a href="<%= urlRegionServer %>"><%= hriEntry.getValue().getHostname().toString() + ":" + infoPort %></a></td> <td><%= hriEntry.getKey().getEncodedName()%></td> <td><%= Bytes.toStringBinary(hriEntry.getKey().getStartKey())%></td> <td><%= Bytes.toStringBinary(hriEntry.getKey().getEndKey())%></td>
