This is an automated email from the ASF dual-hosted git repository. stoty pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/phoenix-omid.git
The following commit(s) were added to refs/heads/master by this push: new e1bceec8 OMID-223 Refactor Omid to use HBase 2 APIs internally e1bceec8 is described below commit e1bceec8e21cf36f9393d6eda82dfee4a15ad9d9 Author: ameszaros <amesza...@cloudera.com> AuthorDate: Wed Jul 20 15:15:25 2022 +0200 OMID-223 Refactor Omid to use HBase 2 APIs internally Co-authored-by: Istvan Toth <st...@apache.org> --- .../src/main/java/org/apache/omid/YAMLUtils.java | 3 - .../omid/transaction/HBaseTransactionManager.java | 4 +- .../omid/transaction/SnapshotFilterImpl.java | 6 +- .../java/org/apache/omid/transaction/TTable.java | 22 +++++-- .../org/apache/omid/transaction/OmidTestBase.java | 35 ++++++---- .../transaction/TestBaillisAnomaliesWithTXs.java | 18 ++--- .../omid/transaction/TestBasicTransaction.java | 28 ++++---- .../apache/omid/transaction/TestCheckpoint.java | 10 +-- .../org/apache/omid/transaction/TestDeletion.java | 2 +- .../transaction/TestEndToEndScenariosWithHA.java | 16 ++--- .../org/apache/omid/transaction/TestFilters.java | 6 +- .../apache/omid/transaction/TestOmidLLRaces.java | 35 ++++++---- .../apache/omid/transaction/TestShadowCells.java | 6 +- .../omid/transaction/TestTTableBehaviour.java | 2 +- .../omid/transaction/TestTransactionCleanup.java | 8 +-- .../omid/transaction/TestTransactionConflict.java | 42 +++++++----- .../apache/omid/transaction/TestTxMgrFailover.java | 10 +-- .../apache/omid/transaction/TestUpdateScan.java | 8 +-- .../omid/committable/hbase/HBaseCommitTable.java | 11 +++- .../committable/hbase/TestHBaseCommitTable.java | 43 +++++++----- .../omid/committable/hbase/RegionSplitter.java | 2 +- .../org/apache/omid/transaction/CellUtils.java | 4 +- .../hbase/regionserver/CompactorScanner.java | 7 +- .../omid/transaction/CellSkipFilterBase.java | 46 ++++++++----- .../omid/transaction/OmidSnapshotFilter.java | 4 +- .../TransactionVisibilityFilterBase.java | 28 ++++++-- .../apache/omid/transaction/TestCompaction.java | 37 +++++++---- .../apache/omid/transaction/TestCompactionLL.java | 31 +++++---- .../omid/transaction/TestCompactorScanner.java | 6 +- .../omid/transaction/TestSnapshotFilter.java | 76 ++++++++++++---------- .../omid/transaction/TestSnapshotFilterLL.java | 36 ++++++---- .../apache/omid/tools/hbase/OmidTableManager.java | 28 +++++--- .../omid/tools/hbase/TestOmidTableManager.java | 12 ++-- .../timestamp/storage/HBaseTimestampStorage.java | 6 +- .../storage/TestHBaseTimestampStorage.java | 32 +++++---- 35 files changed, 405 insertions(+), 265 deletions(-) diff --git a/common/src/main/java/org/apache/omid/YAMLUtils.java b/common/src/main/java/org/apache/omid/YAMLUtils.java index 7d0522be..d88d1a88 100644 --- a/common/src/main/java/org/apache/omid/YAMLUtils.java +++ b/common/src/main/java/org/apache/omid/YAMLUtils.java @@ -53,7 +53,6 @@ public class YAMLUtils { } } - @SuppressWarnings("unchecked") public Map loadSettings(String resourcePath, String defaultResourcePath) throws IOException { Map defaultSetting = loadAsMap(defaultResourcePath); Preconditions.checkState(defaultSetting.size() > 0, String.format("Failed to load file '%s' from classpath", defaultResourcePath)); @@ -64,7 +63,6 @@ public class YAMLUtils { return defaultSetting; } - @SuppressWarnings("unchecked") public Map loadAsMap(String path) throws IOException { try { String content = Resources.toString(Resources.getResource(path), Charset.forName("UTF-8")); @@ -75,7 +73,6 @@ public class YAMLUtils { } } - @SuppressWarnings("unchecked") public Map loadStringAsMap(String content) { try { Map settings = new Yaml().loadAs(content, Map.class); diff --git a/hbase-client/src/main/java/org/apache/omid/transaction/HBaseTransactionManager.java b/hbase-client/src/main/java/org/apache/omid/transaction/HBaseTransactionManager.java index ffc3850d..2226f969 100644 --- a/hbase-client/src/main/java/org/apache/omid/transaction/HBaseTransactionManager.java +++ b/hbase-client/src/main/java/org/apache/omid/transaction/HBaseTransactionManager.java @@ -295,8 +295,8 @@ public class HBaseTransactionManager extends AbstractTransactionManager implemen byte[] family = hBaseCellId.getFamily(); byte[] shadowCellQualifier = CellUtils.addShadowCellSuffixPrefix(hBaseCellId.getQualifier()); get.addColumn(family, shadowCellQualifier); - get.setMaxVersions(1); - get.setTimeStamp(startTimestamp); + get.readVersions(1); + get.setTimestamp(startTimestamp); Result result = tableAccessWrapper.get(get); if (result.containsColumn(family, shadowCellQualifier)) { return Optional.of(Bytes.toLong(result.getValue(family, shadowCellQualifier))); diff --git a/hbase-client/src/main/java/org/apache/omid/transaction/SnapshotFilterImpl.java b/hbase-client/src/main/java/org/apache/omid/transaction/SnapshotFilterImpl.java index 6d99e7a0..f27efd02 100644 --- a/hbase-client/src/main/java/org/apache/omid/transaction/SnapshotFilterImpl.java +++ b/hbase-client/src/main/java/org/apache/omid/transaction/SnapshotFilterImpl.java @@ -33,8 +33,8 @@ import java.util.Map; import java.util.concurrent.ExecutionException; import org.apache.hadoop.hbase.Cell; +import org.apache.hadoop.hbase.CellComparator; import org.apache.hadoop.hbase.CellUtil; -import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Result; @@ -400,7 +400,7 @@ public class SnapshotFilterImpl implements SnapshotFilter { pendingGet.addColumn(CellUtil.cloneFamily(cell), CellUtils.addShadowCellSuffixPrefix(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength())); - pendingGet.setMaxVersions(versionCount); + pendingGet.readVersions(versionCount); pendingGet.setTimeRange(0, cell.getTimestamp()); return pendingGet; @@ -488,7 +488,7 @@ public class SnapshotFilterImpl implements SnapshotFilter { } } - Collections.sort(keyValuesInSnapshot, KeyValue.COMPARATOR); + Collections.sort(keyValuesInSnapshot, CellComparator.getInstance()); return keyValuesInSnapshot; } diff --git a/hbase-client/src/main/java/org/apache/omid/transaction/TTable.java b/hbase-client/src/main/java/org/apache/omid/transaction/TTable.java index 3311e48f..b80e328c 100644 --- a/hbase-client/src/main/java/org/apache/omid/transaction/TTable.java +++ b/hbase-client/src/main/java/org/apache/omid/transaction/TTable.java @@ -46,6 +46,7 @@ import org.apache.hadoop.hbase.client.ResultScanner; import org.apache.hadoop.hbase.client.Row; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.client.Table; +import org.apache.hadoop.hbase.client.TableDescriptor; import org.apache.hadoop.hbase.io.TimeRange; import org.apache.hadoop.hbase.util.Bytes; import org.apache.omid.committable.CommitTable; @@ -197,7 +198,7 @@ public class TTable implements Closeable { TimeRange timeRange = get.getTimeRange(); long startTime = timeRange.getMin(); long endTime = Math.min(timeRange.getMax(), readTimestamp + 1); - tsget.setTimeRange(startTime, endTime).setMaxVersions(1); + tsget.setTimeRange(startTime, endTime).readVersions(1); Map<byte[], NavigableSet<byte[]>> kvs = get.getFamilyMap(); for (Map.Entry<byte[], NavigableSet<byte[]>> entry : kvs.entrySet()) { byte[] family = entry.getKey(); @@ -292,7 +293,7 @@ public class TTable implements Closeable { for (List<Cell> cells : fmap.values()) { for (Cell cell : cells) { CellUtils.validateCell(cell, writeTimestamp); - switch (KeyValue.Type.codeToType(cell.getTypeByte())) { + switch (cell.getType()) { case DeleteColumn: deleteP.addColumn(CellUtil.cloneFamily(cell), CellUtil.cloneQualifier(cell), @@ -477,7 +478,7 @@ public class TTable implements Closeable { HBaseTransaction transaction = enforceHBaseTransactionAsParam(tx); Scan tsscan = new Scan(scan); - tsscan.setMaxVersions(1); + tsscan.readVersions(1); tsscan.setTimeRange(0, transaction.getReadTimestamp() + 1); propagateAttributes(scan, tsscan); Map<byte[], NavigableSet<byte[]>> kvs = scan.getFamilyMap(); @@ -518,6 +519,9 @@ public class TTable implements Closeable { /** * Delegates to {@link Table#getTableDescriptor()} * + * This deprecated method is implemented for backwards compatibility reasons. + * use {@link TTable#getDescriptor()} + * * @return HTableDescriptor an instance of HTableDescriptor * @throws IOException if a remote or network exception occurs. */ @@ -525,6 +529,16 @@ public class TTable implements Closeable { return table.getTableDescriptor(); } + /** + * Delegates to {@link Table#getDescriptor()} + * + * @return TableDescriptor an instance of TableDescriptor + * @throws IOException if a remote or network exception occurs. + */ + public TableDescriptor getDescriptor() throws IOException { + return table.getDescriptor(); + } + /** * Transactional version of {@link Table#exists(Get get)} * @@ -721,7 +735,7 @@ public class TTable implements Closeable { } private void throwExceptionIfOpSetsTimerange(Mutation userOperation) { - if (userOperation.getTimeStamp() != HConstants.LATEST_TIMESTAMP) { + if (userOperation.getTimestamp() != HConstants.LATEST_TIMESTAMP) { throw new IllegalArgumentException( "Timestamp not allowed in transactional user operations"); } diff --git a/hbase-client/src/test/java/org/apache/omid/transaction/OmidTestBase.java b/hbase-client/src/test/java/org/apache/omid/transaction/OmidTestBase.java index 6edbcb5f..ba61d279 100644 --- a/hbase-client/src/test/java/org/apache/omid/transaction/OmidTestBase.java +++ b/hbase-client/src/test/java/org/apache/omid/transaction/OmidTestBase.java @@ -22,23 +22,25 @@ import static org.apache.hadoop.hbase.HConstants.HBASE_CLIENT_RETRIES_NUMBER; import java.io.File; import java.io.IOException; import java.lang.reflect.Method; +import java.util.ArrayList; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.CellUtil; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HBaseTestingUtility; -import org.apache.hadoop.hbase.HColumnDescriptor; -import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.MiniHBaseCluster; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Admin; +import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor; +import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; import org.apache.hadoop.hbase.client.Get; -import org.apache.hadoop.hbase.client.HBaseAdmin; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.Table; +import org.apache.hadoop.hbase.client.TableDescriptor; +import org.apache.hadoop.hbase.client.TableDescriptorBuilder; import org.apache.hadoop.hbase.util.Bytes; import org.apache.omid.NetworkUtils; import org.apache.omid.TestUtils; @@ -143,14 +145,21 @@ public abstract class OmidTestBase { } protected void createTestTable() throws IOException { - HBaseAdmin admin = hBaseUtils.getHBaseAdmin(); - HTableDescriptor test_table_desc = new HTableDescriptor(TableName.valueOf(TEST_TABLE)); - HColumnDescriptor datafam = new HColumnDescriptor(TEST_FAMILY); - HColumnDescriptor datafam2 = new HColumnDescriptor(TEST_FAMILY2); - datafam.setMaxVersions(Integer.MAX_VALUE); - datafam2.setMaxVersions(Integer.MAX_VALUE); - test_table_desc.addFamily(datafam); - test_table_desc.addFamily(datafam2); + Admin admin = hBaseUtils.getAdmin(); + ArrayList<ColumnFamilyDescriptor> fams = new ArrayList<>(); + fams.add(ColumnFamilyDescriptorBuilder + .newBuilder(Bytes.toBytes(TEST_FAMILY)) + .setMaxVersions(Integer.MAX_VALUE) + .build()); + fams.add(ColumnFamilyDescriptorBuilder + .newBuilder(Bytes.toBytes(TEST_FAMILY2)) + .setMaxVersions(Integer.MAX_VALUE) + .build()); + TableDescriptor test_table_desc = TableDescriptorBuilder + .newBuilder(TableName.valueOf(TEST_TABLE)) + .setColumnFamilies(fams) + .build(); + admin.createTable(test_table_desc); } @@ -227,7 +236,7 @@ public abstract class OmidTestBase { public void afterMethod() { try { LOG.info("tearing Down"); - Admin admin = hBaseUtils.getHBaseAdmin(); + Admin admin = hBaseUtils.getAdmin(); deleteTable(admin, TableName.valueOf(TEST_TABLE)); createTestTable(); if (hBaseCommitTableConfig != null) { @@ -254,7 +263,7 @@ public abstract class OmidTestBase { byte[] fam, byte[] col, byte[] value) { try { - Get g = new Get(row).setMaxVersions(1); + Get g = new Get(row).readVersions(1); Result r = table.get(g); Cell cell = r.getColumnLatestCell(fam, col); diff --git a/hbase-client/src/test/java/org/apache/omid/transaction/TestBaillisAnomaliesWithTXs.java b/hbase-client/src/test/java/org/apache/omid/transaction/TestBaillisAnomaliesWithTXs.java index 199451df..74eccf73 100644 --- a/hbase-client/src/test/java/org/apache/omid/transaction/TestBaillisAnomaliesWithTXs.java +++ b/hbase-client/src/test/java/org/apache/omid/transaction/TestBaillisAnomaliesWithTXs.java @@ -25,12 +25,12 @@ import static org.testng.Assert.fail; import java.io.IOException; import java.util.Arrays; +import org.apache.hadoop.hbase.CompareOperator; import org.apache.hadoop.hbase.client.Delete; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.ResultScanner; import org.apache.hadoop.hbase.client.Scan; -import org.apache.hadoop.hbase.filter.CompareFilter; import org.apache.hadoop.hbase.filter.Filter; import org.apache.hadoop.hbase.filter.SingleColumnValueFilter; import org.apache.hadoop.hbase.util.Bytes; @@ -96,7 +96,7 @@ public class TestBaillisAnomaliesWithTXs extends OmidTestBase { // 1) select * from test where value = 30; -- T1. Returns nothing Scan scan = new Scan(); - Filter f = new SingleColumnValueFilter(famName, colName, CompareFilter.CompareOp.EQUAL, Bytes.toBytes(30)); + Filter f = new SingleColumnValueFilter(famName, colName, CompareOperator.EQUAL, Bytes.toBytes(30)); scan.setFilter(f); ResultScanner tx1Scanner = txTable.getScanner(tx1, scan); assertNull(tx1Scanner.next()); @@ -152,7 +152,7 @@ public class TestBaillisAnomaliesWithTXs extends OmidTestBase { // 2) delete from test where value = 20; -- T2, BLOCKS Scan scan = new Scan(); - Filter f = new SingleColumnValueFilter(famName, colName, CompareFilter.CompareOp.EQUAL, Bytes.toBytes(20)); + Filter f = new SingleColumnValueFilter(famName, colName, CompareOperator.EQUAL, Bytes.toBytes(20)); scan.setFilter(f); ResultScanner tx2Scanner = txTable.getScanner(tx2, scan); // assertEquals(tx2Scanner.next(100).length, 1); @@ -209,7 +209,7 @@ public class TestBaillisAnomaliesWithTXs extends OmidTestBase { Transaction tx1 = tm.begin(); Transaction tx2 = tm.begin(); - Scan scan = new Scan(rowId1, rowId1); + Scan scan = new Scan().withStartRow(rowId1).withStopRow(rowId1, true); scan.addColumn(famName, colName); // 1) select * from test where id = 1; -- T1 @@ -285,7 +285,7 @@ public class TestBaillisAnomaliesWithTXs extends OmidTestBase { Transaction tx1 = tm.begin(); Transaction tx2 = tm.begin(); - Scan rowId1Scan = new Scan(rowId1, rowId1); + Scan rowId1Scan = new Scan().withStartRow(rowId1).withStopRow(rowId1, true); rowId1Scan.addColumn(famName, colName); // 1) select * from test where id = 1; -- T1. Shows 1 => 10 @@ -317,7 +317,7 @@ public class TestBaillisAnomaliesWithTXs extends OmidTestBase { count++; } - Scan rowId2Scan = new Scan(rowId2, rowId2); + Scan rowId2Scan = new Scan().withStartRow(rowId2).withStopRow(rowId2, true); rowId2Scan.addColumn(famName, colName); // 3) select * from test where id = 2; -- T2 @@ -404,7 +404,7 @@ public class TestBaillisAnomaliesWithTXs extends OmidTestBase { // 6) delete from test where value = 20; -- T1. Prints // "ERROR: could not serialize access due to concurrent update" - Filter f = new SingleColumnValueFilter(famName, colName, CompareFilter.CompareOp.EQUAL, Bytes.toBytes(20)); + Filter f = new SingleColumnValueFilter(famName, colName, CompareOperator.EQUAL, Bytes.toBytes(20)); Scan checkFor20 = new Scan(); checkFor20.setFilter(f); ResultScanner checkFor20Scanner = txTable.getScanner(tx1, checkFor20); @@ -446,7 +446,7 @@ public class TestBaillisAnomaliesWithTXs extends OmidTestBase { Transaction tx1 = tm.begin(); Transaction tx2 = tm.begin(); - Scan rowId12Scan = new Scan(rowId1, rowId3); + Scan rowId12Scan = new Scan().withStartRow(rowId1).withStopRow(rowId3); rowId12Scan.addColumn(famName, colName); // 1) select * from test where id in (1,2); -- T1 @@ -534,7 +534,7 @@ public class TestBaillisAnomaliesWithTXs extends OmidTestBase { Transaction tx1 = tm.begin(); Transaction tx2 = tm.begin(); - Filter f = new SingleColumnValueFilter(famName, colName, CompareFilter.CompareOp.EQUAL, Bytes.toBytes("30")); + Filter f = new SingleColumnValueFilter(famName, colName, CompareOperator.EQUAL, Bytes.toBytes("30")); Scan value30 = new Scan(); value30.setFilter(f); value30.addColumn(famName, colName); diff --git a/hbase-client/src/test/java/org/apache/omid/transaction/TestBasicTransaction.java b/hbase-client/src/test/java/org/apache/omid/transaction/TestBasicTransaction.java index 831f0204..8530ac25 100644 --- a/hbase-client/src/test/java/org/apache/omid/transaction/TestBasicTransaction.java +++ b/hbase-client/src/test/java/org/apache/omid/transaction/TestBasicTransaction.java @@ -65,14 +65,14 @@ public class TestBasicTransaction extends OmidTestBase { tt.close(); // Checks - Get getResultRow1 = new Get(rowName1).setMaxVersions(1); + Get getResultRow1 = new Get(rowName1).readVersions(1); Result result1 = tt.getHTable().get(getResultRow1); byte[] val1 = result1.getValue(famName1, colName1); assertTrue(Bytes.equals(dataValue1, result1.getValue(famName1, colName1)), "Unexpected value for row 1 in col 1: " + Bytes.toString(val1)); long tsRow1 = result1.rawCells()[0].getTimestamp(); - Get getResultRow2 = new Get(rowName2).setMaxVersions(1); + Get getResultRow2 = new Get(rowName2).readVersions(1); Result result2 = tt.getHTable().get(getResultRow2); byte[] val2 = result2.getValue(famName1, colName1); assertTrue(Bytes.equals(dataValue2, result2.getValue(famName1, colName1)), @@ -125,7 +125,7 @@ public class TestBasicTransaction extends OmidTestBase { tt.close(); // Checks - Get getResultRow1 = new Get(rowName1).setMaxVersions(2); + Get getResultRow1 = new Get(rowName1).readVersions(2); Result result1 = tt.getHTable().get(getResultRow1); byte[] val1 = result1.getValue(famName1, colName1); assertTrue(Bytes.equals(dataValue3, result1.getValue(famName1, colName1)), @@ -134,7 +134,7 @@ public class TestBasicTransaction extends OmidTestBase { long lastTsRow1 = result1.rawCells()[0].getTimestamp(); long previousTsRow1 = result1.rawCells()[1].getTimestamp(); - Get getResultRow2 = new Get(rowName2).setMaxVersions(2); + Get getResultRow2 = new Get(rowName2).readVersions(2); Result result2 = tt.getHTable().get(getResultRow2); byte[] val2 = result2.getValue(famName1, colName1); assertTrue(Bytes.equals(dataValue4, result2.getValue(famName1, colName1)), @@ -178,7 +178,7 @@ public class TestBasicTransaction extends OmidTestBase { tt.put(t2, p); tm.commit(t2); - Get g = new Get(row).setMaxVersions(1); + Get g = new Get(row).readVersions(1); Result r = tt.getHTable().get(g); assertTrue(Bytes.equals(data2, r.getValue(fam, col)), "Unexpected value for read: " + Bytes.toString(r.getValue(fam, col))); @@ -216,7 +216,7 @@ public class TestBasicTransaction extends OmidTestBase { } Transaction tread = tm.begin(); - Get g = new Get(row).setMaxVersions(1); + Get g = new Get(row).readVersions(1); Result r = tt.getHTable().get(g); assertTrue(Bytes.equals(data2, r.getValue(fam, col)), "Unexpected value for read: " + Bytes.toString(r.getValue(fam, col))); @@ -253,7 +253,7 @@ public class TestBasicTransaction extends OmidTestBase { tt.put(t2, p); Transaction tread = tm.begin(); - Get g = new Get(row).setMaxVersions(1); + Get g = new Get(row).readVersions(1); Result r = tt.get(tread, g); assertTrue(Bytes.equals(data1, r.getValue(fam, col)), "Unexpected value for SI read " + tread + ": " + Bytes.toString(r.getValue(fam, col))); @@ -314,7 +314,7 @@ public class TestBasicTransaction extends OmidTestBase { txTable.put(tx2, p); Transaction scanTx = tm.begin(); // This is the concurrent transactional scanner - ResultScanner rs = txTable.getScanner(scanTx, new Scan().setStartRow(startRow).setStopRow(stopRow)); + ResultScanner rs = txTable.getScanner(scanTx, new Scan().withStartRow(startRow).withStopRow(stopRow)); Result r = rs.next(); // Exercise the next() method int i = 0; while (r != null) { @@ -335,7 +335,7 @@ public class TestBasicTransaction extends OmidTestBase { int modifiedRows = 0; Transaction newScanTx = tm.begin(); - ResultScanner newRS = txTable.getScanner(newScanTx, new Scan().setStartRow(startRow).setStopRow(stopRow)); + ResultScanner newRS = txTable.getScanner(newScanTx, new Scan().withStartRow(startRow).withStopRow(stopRow)); Result[] results = newRS.next(10); // Exercise the next(numRows) method for (Result result : results) { if (Bytes.equals(data2, result.getValue(fam, col))) { @@ -347,7 +347,7 @@ public class TestBasicTransaction extends OmidTestBase { // Same check as before but checking that the results are correct when retrieved through the Scanner Iterator modifiedRows = 0; - ResultScanner iterableRS = txTable.getScanner(newScanTx, new Scan().setStartRow(startRow).setStopRow(stopRow)); + ResultScanner iterableRS = txTable.getScanner(newScanTx, new Scan().withStartRow(startRow).withStopRow(stopRow)); for (Result res : iterableRS) { if (Bytes.equals(data2, res.getValue(fam, col))) { LOG.trace("Modified :" + Bytes.toString(res.getRow())); @@ -403,7 +403,7 @@ public class TestBasicTransaction extends OmidTestBase { txTable.put(tx2, p); int modifiedRows = 0; - ResultScanner rs = txTable.getScanner(tx2, new Scan().setStartRow(startRow).setStopRow(stopRow)); + ResultScanner rs = txTable.getScanner(tx2, new Scan().withStartRow(startRow).withStopRow(stopRow)); Result r = rs.next(); while (r != null) { if (Bytes.equals(data2, r.getValue(fam, col))) { @@ -421,7 +421,7 @@ public class TestBasicTransaction extends OmidTestBase { tm.rollback(tx2); Transaction txScan = tm.begin(); - rs = txTable.getScanner(txScan, new Scan().setStartRow(startRow).setStopRow(stopRow)); + rs = txTable.getScanner(txScan, new Scan().withStartRow(startRow).withStopRow(stopRow)); r = rs.next(); while (r != null) { LOG.trace("Scan1 :" + Bytes.toString(r.getRow()) + " => " + Bytes.toString(r.getValue(fam, col))); @@ -431,7 +431,7 @@ public class TestBasicTransaction extends OmidTestBase { } // Same check as before but checking that the results are correct when retrieved through the Scanner Iterator - ResultScanner iterableRS = txTable.getScanner(txScan, new Scan().setStartRow(startRow).setStopRow(stopRow)); + ResultScanner iterableRS = txTable.getScanner(txScan, new Scan().withStartRow(startRow).withStopRow(stopRow)); for (Result result : iterableRS) { assertTrue(Bytes.equals(data1, result.getValue(fam, col)), "Unexpected value for SI scan " + txScan + ": " + Bytes.toString(result.getValue(fam, col))); @@ -469,7 +469,7 @@ public class TestBasicTransaction extends OmidTestBase { Transaction tx3 = tm.begin(); - Get g = new Get(rowName1).setMaxVersions(); + Get g = new Get(rowName1).readAllVersions(); g.addColumn(famName1, colName1); Result r = tt.get(tx3, g); assertEquals(r.size(), 0, "Unexpected size for read."); diff --git a/hbase-client/src/test/java/org/apache/omid/transaction/TestCheckpoint.java b/hbase-client/src/test/java/org/apache/omid/transaction/TestCheckpoint.java index 972f5564..f05fc0a2 100644 --- a/hbase-client/src/test/java/org/apache/omid/transaction/TestCheckpoint.java +++ b/hbase-client/src/test/java/org/apache/omid/transaction/TestCheckpoint.java @@ -88,7 +88,7 @@ public class TestCheckpoint extends OmidTestBase { row1.addColumn(famName1, colName1, dataValue1); tt.put(tx1, row1); - Get g = new Get(rowName1).setMaxVersions(1); + Get g = new Get(rowName1).readVersions(1); Result r = tt.get(tx1, g); assertTrue(Bytes.equals(dataValue1, r.getValue(famName1, colName1)), @@ -169,7 +169,7 @@ public class TestCheckpoint extends OmidTestBase { HBaseTransaction hbaseTx1 = enforceHBaseTransactionAsParam(tx1); - Get g = new Get(rowName1).setMaxVersions(1); + Get g = new Get(rowName1).readVersions(1); Result r = tt.get(tx1, g); assertTrue(Bytes.equals(dataValue0, r.getValue(famName1, colName1)), @@ -227,7 +227,7 @@ public class TestCheckpoint extends OmidTestBase { HBaseTransaction hbaseTx1 = enforceHBaseTransactionAsParam(tx1); - Get g = new Get(rowName1).setMaxVersions(100); + Get g = new Get(rowName1).readVersions(100); Result r = tt.get(tx1, g); assertTrue(Bytes.equals(dataValue0, r.getValue(famName1, colName1)), @@ -237,7 +237,7 @@ public class TestCheckpoint extends OmidTestBase { row1.addColumn(famName1, colName1, dataValue1); tt.put(tx1, row1); - g = new Get(rowName1).setMaxVersions(100); + g = new Get(rowName1).readVersions(100); r = tt.get(tx1, g); assertTrue(Bytes.equals(dataValue1, r.getValue(famName1, colName1)), @@ -291,7 +291,7 @@ public class TestCheckpoint extends OmidTestBase { row1.addColumn(famName1, colName1, dataValue1); tt.put(tx1, row1); - Get g = new Get(rowName1).setMaxVersions(1); + Get g = new Get(rowName1).readVersions(1); Result r = tt.get(tx1, g); assertTrue(Bytes.equals(dataValue1, r.getValue(famName1, colName1)), diff --git a/hbase-client/src/test/java/org/apache/omid/transaction/TestDeletion.java b/hbase-client/src/test/java/org/apache/omid/transaction/TestDeletion.java index 3c4387d2..79eb5628 100644 --- a/hbase-client/src/test/java/org/apache/omid/transaction/TestDeletion.java +++ b/hbase-client/src/test/java/org/apache/omid/transaction/TestDeletion.java @@ -443,7 +443,7 @@ public class TestDeletion extends OmidTestBase { // Check data has not been written to HBase // -------------------------------------------------------------------- Get get = new Get(Bytes.toBytes("row1")); - get.setTimeStamp(deleteTx.getTransactionId()); + get.setTimestamp(deleteTx.getTransactionId()); Result result = txTable.getHTable().get(get); assertTrue(result.isEmpty()); diff --git a/hbase-client/src/test/java/org/apache/omid/transaction/TestEndToEndScenariosWithHA.java b/hbase-client/src/test/java/org/apache/omid/transaction/TestEndToEndScenariosWithHA.java index e3e4dc0b..be4084d2 100644 --- a/hbase-client/src/test/java/org/apache/omid/transaction/TestEndToEndScenariosWithHA.java +++ b/hbase-client/src/test/java/org/apache/omid/transaction/TestEndToEndScenariosWithHA.java @@ -36,8 +36,8 @@ import org.apache.curator.framework.recipes.cache.NodeCache; import org.apache.curator.framework.recipes.cache.NodeCacheListener; import org.apache.curator.retry.ExponentialBackoffRetry; import org.apache.hadoop.hbase.TableName; +import org.apache.hadoop.hbase.client.Admin; import org.apache.hadoop.hbase.client.Get; -import org.apache.hadoop.hbase.client.HBaseAdmin; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.util.Bytes; @@ -162,7 +162,7 @@ public class TestEndToEndScenariosWithHA extends OmidTestBase { @AfterMethod(alwaysRun = true, timeOut = 60_000) public void cleanup() throws Exception { LOG.info("Cleanup"); - HBaseAdmin admin = hBaseUtils.getHBaseAdmin(); + Admin admin = hBaseUtils.getAdmin(); deleteTable(admin, TableName.valueOf(DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME)); hBaseUtils.createTable(TableName.valueOf((DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME)), new byte[][]{DEFAULT_TIMESTAMP_STORAGE_CF_NAME.getBytes()}, @@ -236,7 +236,7 @@ public class TestEndToEndScenariosWithHA extends OmidTestBase { leaseManager1.pausedInStillInLeasePeriod(); // Read interleaved and check the values writen by tx 1 - Get getRow1 = new Get(row1).setMaxVersions(1); + Get getRow1 = new Get(row1).readVersions(1); getRow1.addColumn(TEST_FAMILY.getBytes(), qualifier1); Result r = txTable.get(interleavedReadTx, getRow1); assertEquals(r.getValue(TEST_FAMILY.getBytes(), qualifier1), initialData, @@ -255,7 +255,7 @@ public class TestEndToEndScenariosWithHA extends OmidTestBase { } // Read interleaved and check the values written by tx 1 - Get getRow2 = new Get(row2).setMaxVersions(1); + Get getRow2 = new Get(row2).readVersions(1); r = txTable.get(interleavedReadTx, getRow2); assertEquals(r.getValue(TEST_FAMILY.getBytes(), qualifier2), initialData, "Unexpected value for SI read R2Q2" + interleavedReadTx + ": " @@ -346,12 +346,12 @@ public class TestEndToEndScenariosWithHA extends OmidTestBase { HBaseTransaction tx2 = (HBaseTransaction) tm.begin(); LOG.info("Starting Tx {} writing values for cells ({}, {}) ", tx2, Bytes.toString(data1_q1), Bytes.toString(data1_q2)); - Get getData1R1Q1 = new Get(row1).setMaxVersions(1); + Get getData1R1Q1 = new Get(row1).readVersions(1); Result r = txTable.get(tx2, getData1R1Q1); assertEquals(r.getValue(TEST_FAMILY.getBytes(), qualifier1), initialData, "Unexpected value for SI read R1Q1" + tx2 + ": " + Bytes.toString(r.getValue(TEST_FAMILY.getBytes(), qualifier1))); - Get getData1R2Q2 = new Get(row2).setMaxVersions(1); + Get getData1R2Q2 = new Get(row2).readVersions(1); r = txTable.get(tx2, getData1R2Q2); assertEquals(r.getValue(TEST_FAMILY.getBytes(), qualifier2), initialData, "Unexpected value for SI read R1Q1" + tx2 + ": " @@ -378,13 +378,13 @@ public class TestEndToEndScenariosWithHA extends OmidTestBase { throws IOException, RollbackException { Transaction readTx = tm.begin(); LOG.info("Starting Read Tx {} for checking cell values", readTx.getTransactionId()); - Get getRow1 = new Get(row1).setMaxVersions(1); + Get getRow1 = new Get(row1).readVersions(1); getRow1.addColumn(TEST_FAMILY.getBytes(), qualifier1); Result r = txTable.get(readTx, getRow1); assertEquals(r.getValue(TEST_FAMILY.getBytes(), qualifier1), expectedDataR1Q1, "Unexpected value for SI read R1Q1" + readTx + ": " + Bytes .toString(r.getValue(TEST_FAMILY.getBytes(), qualifier1))); - Get getRow2 = new Get(row2).setMaxVersions(1); + Get getRow2 = new Get(row2).readVersions(1); r = txTable.get(readTx, getRow2); assertEquals(r.getValue(TEST_FAMILY.getBytes(), qualifier2), expectedDataR2Q2, "Unexpected value for SI read R2Q2" + readTx + ": " + Bytes diff --git a/hbase-client/src/test/java/org/apache/omid/transaction/TestFilters.java b/hbase-client/src/test/java/org/apache/omid/transaction/TestFilters.java index c908bafc..07cf0217 100644 --- a/hbase-client/src/test/java/org/apache/omid/transaction/TestFilters.java +++ b/hbase-client/src/test/java/org/apache/omid/transaction/TestFilters.java @@ -23,6 +23,7 @@ import static org.mockito.Mockito.spy; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNull; +import org.apache.hadoop.hbase.CompareOperator; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Result; @@ -30,7 +31,6 @@ import org.apache.hadoop.hbase.client.ResultScanner; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.filter.BinaryComparator; import org.apache.hadoop.hbase.filter.ColumnPrefixFilter; -import org.apache.hadoop.hbase.filter.CompareFilter; import org.apache.hadoop.hbase.filter.Filter; import org.apache.hadoop.hbase.filter.ValueFilter; import org.apache.hadoop.hbase.util.Bytes; @@ -65,7 +65,7 @@ public class TestFilters extends OmidTestBase { @Test(timeOut = 60_000) public void testGetWithValueFilter(ITestContext context) throws Exception { - testGet(context, new ValueFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator(col1))); + testGet(context, new ValueFilter(CompareOperator.EQUAL, new BinaryComparator(col1))); } private void testGet(ITestContext context, Filter f) throws Exception { @@ -114,7 +114,7 @@ public class TestFilters extends OmidTestBase { @Test(timeOut = 60_000) public void testScanWithValueFilter(ITestContext context) throws Exception { - testScan(context, new ValueFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator(col1))); + testScan(context, new ValueFilter(CompareOperator.EQUAL, new BinaryComparator(col1))); } private void testScan(ITestContext context, Filter f) throws Exception { diff --git a/hbase-client/src/test/java/org/apache/omid/transaction/TestOmidLLRaces.java b/hbase-client/src/test/java/org/apache/omid/transaction/TestOmidLLRaces.java index 3de0c727..7d2fa76b 100644 --- a/hbase-client/src/test/java/org/apache/omid/transaction/TestOmidLLRaces.java +++ b/hbase-client/src/test/java/org/apache/omid/transaction/TestOmidLLRaces.java @@ -48,20 +48,20 @@ import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; - +import java.util.ArrayList; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HBaseTestingUtility; -import org.apache.hadoop.hbase.HColumnDescriptor; -import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.MiniHBaseCluster; - +import org.apache.hadoop.hbase.client.Admin; +import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor; +import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; - -import org.apache.hadoop.hbase.client.HBaseAdmin; +import org.apache.hadoop.hbase.client.TableDescriptor; +import org.apache.hadoop.hbase.client.TableDescriptorBuilder; import org.apache.omid.TestUtils; @@ -150,14 +150,21 @@ public class TestOmidLLRaces { } private void createTestTable() throws IOException { - HBaseAdmin admin = hBaseUtils.getHBaseAdmin(); - HTableDescriptor test_table_desc = new HTableDescriptor(TableName.valueOf(TEST_TABLE)); - HColumnDescriptor datafam = new HColumnDescriptor(TEST_FAMILY); - HColumnDescriptor datafam2 = new HColumnDescriptor(TEST_FAMILY2); - datafam.setMaxVersions(Integer.MAX_VALUE); - datafam2.setMaxVersions(Integer.MAX_VALUE); - test_table_desc.addFamily(datafam); - test_table_desc.addFamily(datafam2); + Admin admin = hBaseUtils.getAdmin(); + ArrayList<ColumnFamilyDescriptor> fams = new ArrayList<>(); + fams.add(ColumnFamilyDescriptorBuilder + .newBuilder(Bytes.toBytes(TEST_FAMILY)) + .setMaxVersions(Integer.MAX_VALUE) + .build()); + fams.add(ColumnFamilyDescriptorBuilder + .newBuilder(Bytes.toBytes(TEST_FAMILY2)) + .setMaxVersions(Integer.MAX_VALUE) + .build()); + TableDescriptor test_table_desc = TableDescriptorBuilder + .newBuilder(TableName.valueOf(TEST_TABLE)) + .setColumnFamilies(fams) + .build(); + admin.createTable(test_table_desc); } diff --git a/hbase-client/src/test/java/org/apache/omid/transaction/TestShadowCells.java b/hbase-client/src/test/java/org/apache/omid/transaction/TestShadowCells.java index 12e2d50a..f73283d7 100644 --- a/hbase-client/src/test/java/org/apache/omid/transaction/TestShadowCells.java +++ b/hbase-client/src/test/java/org/apache/omid/transaction/TestShadowCells.java @@ -42,9 +42,9 @@ import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.CellUtil; import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.TableName; +import org.apache.hadoop.hbase.client.Admin; import org.apache.hadoop.hbase.client.Delete; import org.apache.hadoop.hbase.client.Get; -import org.apache.hadoop.hbase.client.HBaseAdmin; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.ResultScanner; @@ -269,7 +269,7 @@ public class TestShadowCells extends OmidTestBase { @Override public ListenableFuture<Void> answer(InvocationOnMock invocation) throws Throwable { table.flushCommits(); - HBaseAdmin admin = hBaseUtils.getHBaseAdmin(); + Admin admin = hBaseUtils.getAdmin(); admin.disableTable(TableName.valueOf(table.getTableName())); return (ListenableFuture<Void>) invocation.callRealMethod(); } @@ -284,7 +284,7 @@ public class TestShadowCells extends OmidTestBase { tm.commit(tx); // Tx effectively commits but the post Commit Actions failed when updating the shadow cells // Re-enable table to allow the required checks below - HBaseAdmin admin = hBaseUtils.getHBaseAdmin(); + Admin admin = hBaseUtils.getAdmin(); admin.enableTable(TableName.valueOf(table.getTableName())); // 1) check that shadow cell is not created... diff --git a/hbase-client/src/test/java/org/apache/omid/transaction/TestTTableBehaviour.java b/hbase-client/src/test/java/org/apache/omid/transaction/TestTTableBehaviour.java index 36fb3b50..81832d15 100644 --- a/hbase-client/src/test/java/org/apache/omid/transaction/TestTTableBehaviour.java +++ b/hbase-client/src/test/java/org/apache/omid/transaction/TestTTableBehaviour.java @@ -70,7 +70,7 @@ public class TestTTableBehaviour { // Test that get fails when a timestamp is specified Get get = new Get(row); - get.setTimeStamp(randomTimestampValue); + get.setTimestamp(randomTimestampValue); try { tt.get(tx, get); fail("Should have thrown an IllegalArgumentException due to timestamp specification"); diff --git a/hbase-client/src/test/java/org/apache/omid/transaction/TestTransactionCleanup.java b/hbase-client/src/test/java/org/apache/omid/transaction/TestTransactionCleanup.java index f7438571..42eb5895 100644 --- a/hbase-client/src/test/java/org/apache/omid/transaction/TestTransactionCleanup.java +++ b/hbase-client/src/test/java/org/apache/omid/transaction/TestTransactionCleanup.java @@ -23,7 +23,7 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.testng.Assert.assertEquals; -import org.apache.hadoop.hbase.KeyValue; +import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.ResultScanner; @@ -100,7 +100,7 @@ public class TestTransactionCleanup extends OmidTestBase { // So now we have to check that the Delete marker introduced by the // cleanup process is there - Scan scan = new Scan(row); + Scan scan = new Scan().withStartRow(row); scan.setRaw(true); // Raw scan to obtain the deleted cells ResultScanner resultScanner = txTable.getHTable().getScanner(scan); int resultCount = 0; @@ -108,8 +108,8 @@ public class TestTransactionCleanup extends OmidTestBase { assertEquals(result.size(), 2); // Size == 2, including the put and delete from cleanup LOG.trace("Result {}", result); // The last element of the qualifier should have the Delete marker - byte encodedType = result.getColumnLatestCell(family, qual).getTypeByte(); - assertEquals(KeyValue.Type.codeToType(encodedType), KeyValue.Type.Delete); + Cell.Type encodedType = result.getColumnLatestCell(family, qual).getType(); + assertEquals(encodedType, Cell.Type.Delete); resultCount++; } assertEquals(resultCount, ROWS_MODIFIED); diff --git a/hbase-client/src/test/java/org/apache/omid/transaction/TestTransactionConflict.java b/hbase-client/src/test/java/org/apache/omid/transaction/TestTransactionConflict.java index 71810401..4960f1ad 100644 --- a/hbase-client/src/test/java/org/apache/omid/transaction/TestTransactionConflict.java +++ b/hbase-client/src/test/java/org/apache/omid/transaction/TestTransactionConflict.java @@ -21,10 +21,10 @@ import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; import static org.testng.Assert.fail; -import org.apache.hadoop.hbase.HColumnDescriptor; -import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Admin; +import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor; +import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; import org.apache.hadoop.hbase.client.Delete; @@ -34,6 +34,8 @@ import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.ResultScanner; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.client.Table; +import org.apache.hadoop.hbase.client.TableDescriptor; +import org.apache.hadoop.hbase.client.TableDescriptorBuilder; import org.apache.hadoop.hbase.util.Bytes; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -93,11 +95,14 @@ public class TestTransactionConflict extends OmidTestBase { TableName htable2 = TableName.valueOf(table2); if (!admin.tableExists(htable2)) { - HTableDescriptor desc = new HTableDescriptor(table2Name); - HColumnDescriptor datafam = new HColumnDescriptor(TEST_FAMILY); - datafam.setMaxVersions(Integer.MAX_VALUE); - desc.addFamily(datafam); - + ColumnFamilyDescriptor datafam = ColumnFamilyDescriptorBuilder + .newBuilder(Bytes.toBytes(TEST_FAMILY)) + .setMaxVersions(Integer.MAX_VALUE) + .build(); + TableDescriptor desc = TableDescriptorBuilder + .newBuilder(table2Name) + .setColumnFamily(datafam) + .build(); admin.createTable(desc); } @@ -175,7 +180,7 @@ public class TestTransactionConflict extends OmidTestBase { p.addColumn(fam, col, data1); tt.put(t1, p); - Get g = new Get(row).setMaxVersions(); + Get g = new Get(row).readAllVersions(); g.addColumn(fam, col); Result r = tt.getHTable().get(g); assertEquals(r.size(), 1, "Unexpected size for read."); @@ -300,15 +305,18 @@ public class TestTransactionConflict extends OmidTestBase { TableName table2Name = TableName.valueOf(table2); try (Connection conn = ConnectionFactory.createConnection(hbaseConf); - Admin admin = conn.getAdmin()) { + Admin admin = conn.getAdmin()) { TableName htable2 = TableName.valueOf(table2); if (!admin.tableExists(htable2)) { - HTableDescriptor desc = new HTableDescriptor(table2Name); - HColumnDescriptor datafam = new HColumnDescriptor(TEST_FAMILY); - datafam.setMaxVersions(Integer.MAX_VALUE); - desc.addFamily(datafam); - + ColumnFamilyDescriptor datafam = ColumnFamilyDescriptorBuilder + .newBuilder(Bytes.toBytes(TEST_FAMILY)) + .setMaxVersions(Integer.MAX_VALUE) + .build(); + TableDescriptor desc = TableDescriptorBuilder + .newBuilder(table2Name) + .setColumnFamily(datafam) + .build(); admin.createTable(desc); } @@ -337,7 +345,7 @@ public class TestTransactionConflict extends OmidTestBase { p.addColumn(fam, col, data1); tt.put(t1, p); - Get g = new Get(row).setMaxVersions(); + Get g = new Get(row).readAllVersions(); g.addColumn(fam, col); Result r = tt.getHTable().get(g); assertEquals(r.size(), 1, "Unexpected size for read."); @@ -563,7 +571,7 @@ public class TestTransactionConflict extends OmidTestBase { p.addColumn(fam, col, data1); tt1.put(t1, p); - Get g = new Get(row).setMaxVersions(); + Get g = new Get(row).readAllVersions(); g.addColumn(fam, col); Result r = tt1.getHTable().get(g); assertEquals(r.size(), 1, "Unexpected size for read."); @@ -585,7 +593,7 @@ public class TestTransactionConflict extends OmidTestBase { assertTrue(Bytes.equals(data2, r.getValue(fam, col)), "Unexpected value for read: " + Bytes.toString(r.getValue(fam, col))); - Get g1 = new Get(row1).setMaxVersions(); + Get g1 = new Get(row1).readAllVersions(); g1.addColumn(fam, col); r = tt1.getHTable().get(g1); assertEquals(r.size(), 1, "Unexpected size for read."); diff --git a/hbase-client/src/test/java/org/apache/omid/transaction/TestTxMgrFailover.java b/hbase-client/src/test/java/org/apache/omid/transaction/TestTxMgrFailover.java index 4dad9bbf..8b05921e 100644 --- a/hbase-client/src/test/java/org/apache/omid/transaction/TestTxMgrFailover.java +++ b/hbase-client/src/test/java/org/apache/omid/transaction/TestTxMgrFailover.java @@ -110,7 +110,7 @@ public class TestTxMgrFailover extends OmidTestBase { put.addColumn(TEST_FAMILY.getBytes(), qualifier, data1); txTable.put(tx1, put); assertEquals(hBaseUtils.countRows(txTable.getHTable()), 1, "Rows should be 1!"); - checkOperationSuccessOnCell(txTable.getHTable(), KeyValue.Type.Put, data1, TEST_TABLE.getBytes(), row1, TEST_FAMILY.getBytes(), + checkOperationSuccessOnCell(txTable.getHTable(), Cell.Type.Put, data1, TEST_TABLE.getBytes(), row1, TEST_FAMILY.getBytes(), qualifier); try { @@ -125,7 +125,7 @@ public class TestTxMgrFailover extends OmidTestBase { assertEquals(tx1.getStatus(), Status.ROLLEDBACK); assertEquals(tx1.getCommitTimestamp(), 0); // Check the cleanup process did its job and the committed data is NOT there - checkOperationSuccessOnCell(txTable.getHTable(), KeyValue.Type.Delete, null, TEST_TABLE.getBytes(), row1, TEST_FAMILY.getBytes(), + checkOperationSuccessOnCell(txTable.getHTable(), Cell.Type.Delete, null, TEST_TABLE.getBytes(), row1, TEST_FAMILY.getBytes(), qualifier); } @@ -136,7 +136,7 @@ public class TestTxMgrFailover extends OmidTestBase { // ---------------------------------------------------------------------------------------------------------------- protected void checkOperationSuccessOnCell(Table table, - KeyValue.Type targetOp, + Cell.Type targetOp, @Nullable byte[] expectedValue, byte[] tableName, byte[] row, @@ -144,13 +144,13 @@ public class TestTxMgrFailover extends OmidTestBase { byte[] col) { try { - Get get = new Get(row).setMaxVersions(1); + Get get = new Get(row).readVersions(1); Result result = table.get(get); Cell latestCell = result.getColumnLatestCell(fam, col); switch (targetOp) { case Put: - assertEquals(latestCell.getTypeByte(), targetOp.getCode()); + assertEquals(latestCell.getType(), targetOp); assertEquals(CellUtil.cloneValue(latestCell), expectedValue); LOG.trace("Value for " + Bytes.toString(tableName) + ":" + Bytes.toString(row) + ":" + Bytes.toString(fam) + ":" diff --git a/hbase-client/src/test/java/org/apache/omid/transaction/TestUpdateScan.java b/hbase-client/src/test/java/org/apache/omid/transaction/TestUpdateScan.java index 255a12de..658aa929 100644 --- a/hbase-client/src/test/java/org/apache/omid/transaction/TestUpdateScan.java +++ b/hbase-client/src/test/java/org/apache/omid/transaction/TestUpdateScan.java @@ -20,6 +20,7 @@ package org.apache.omid.transaction; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; +import org.apache.hadoop.hbase.CompareOperator; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Result; @@ -72,13 +73,12 @@ public class TestUpdateScan extends OmidTestBase { } tm.commit(t); - Scan s = new Scan(startKey); - CompareFilter.CompareOp op = CompareFilter.CompareOp.LESS_OR_EQUAL; - RowFilter toFilter = new RowFilter(op, new BinaryPrefixComparator(stopKey)); + Scan s = new Scan().withStartRow(startKey); + RowFilter toFilter = new RowFilter(CompareOperator.LESS_OR_EQUAL, new BinaryPrefixComparator(stopKey)); boolean startInclusive = true; if (!startInclusive) { FilterList filters = new FilterList(FilterList.Operator.MUST_PASS_ALL); - filters.addFilter(new RowFilter(CompareFilter.CompareOp.GREATER, new BinaryPrefixComparator(startKey))); + filters.addFilter(new RowFilter(CompareOperator.GREATER, new BinaryPrefixComparator(startKey))); filters.addFilter(new WhileMatchFilter(toFilter)); s.setFilter(filters); } else { diff --git a/hbase-commit-table/src/main/java/org/apache/omid/committable/hbase/HBaseCommitTable.java b/hbase-commit-table/src/main/java/org/apache/omid/committable/hbase/HBaseCommitTable.java index c096ea43..6ef9146f 100644 --- a/hbase-commit-table/src/main/java/org/apache/omid/committable/hbase/HBaseCommitTable.java +++ b/hbase-commit-table/src/main/java/org/apache/omid/committable/hbase/HBaseCommitTable.java @@ -30,6 +30,7 @@ import javax.inject.Inject; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.TableName; +import org.apache.hadoop.hbase.client.CheckAndMutate; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; import org.apache.hadoop.hbase.client.Delete; @@ -144,7 +145,10 @@ public class HBaseCommitTable implements CommitTable { Put put = new Put(transactionRow, startTimestamp); byte[] value = encodeCommitTimestamp(startTimestamp, commitTimestamp); put.addColumn(commitTableFamily, COMMIT_TABLE_QUALIFIER, value); - return table.checkAndPut(transactionRow, commitTableFamily, INVALID_TX_QUALIFIER, null, put); + CheckAndMutate checkAndPut = CheckAndMutate.newBuilder(transactionRow) + .ifNotExists(commitTableFamily, INVALID_TX_QUALIFIER) + .build(put); + return table.checkAndMutate(checkAndPut).isSuccess(); } } @@ -262,7 +266,10 @@ public class HBaseCommitTable implements CommitTable { // timestamp is added and read by a transaction, then snapshot isolation // might not be hold (due to the invalidation) // TODO: Decide what we should we do if we can not contact the commit table. loop till succeed??? - boolean result = table.checkAndPut(row, commitTableFamily, COMMIT_TABLE_QUALIFIER, null, invalidationPut); + CheckAndMutate checkAndPut = CheckAndMutate.newBuilder(row) + .ifNotExists(commitTableFamily, COMMIT_TABLE_QUALIFIER) + .build(invalidationPut); + boolean result = table.checkAndMutate(checkAndPut).isSuccess(); f.set(result); } catch (IOException ioe) { f.setException(ioe); diff --git a/hbase-commit-table/src/test/java/org/apache/omid/committable/hbase/TestHBaseCommitTable.java b/hbase-commit-table/src/test/java/org/apache/omid/committable/hbase/TestHBaseCommitTable.java index 35d40db5..07e4fe54 100644 --- a/hbase-commit-table/src/test/java/org/apache/omid/committable/hbase/TestHBaseCommitTable.java +++ b/hbase-commit-table/src/test/java/org/apache/omid/committable/hbase/TestHBaseCommitTable.java @@ -21,21 +21,25 @@ import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; +import java.util.ArrayList; +import java.util.List; import java.util.concurrent.Future; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HBaseTestingUtility; -import org.apache.hadoop.hbase.HColumnDescriptor; -import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.MiniHBaseCluster; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Admin; +import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor; +import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; import org.apache.hadoop.hbase.client.ResultScanner; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.client.Table; +import org.apache.hadoop.hbase.client.TableDescriptor; +import org.apache.hadoop.hbase.client.TableDescriptorBuilder; import org.apache.omid.committable.CommitTable; import org.apache.omid.committable.CommitTable.Client; import org.apache.omid.committable.CommitTable.CommitTimestamp; @@ -90,30 +94,33 @@ public class TestHBaseCommitTable { @BeforeMethod public void setUp() throws Exception { - Admin admin = testutil.getHBaseAdmin(); + Admin admin = testutil.getAdmin(); if (!admin.tableExists(TableName.valueOf(TEST_TABLE))) { - HTableDescriptor desc = new HTableDescriptor(TABLE_NAME); - HColumnDescriptor datafam = new HColumnDescriptor(commitTableFamily); - datafam.setMaxVersions(Integer.MAX_VALUE); - desc.addFamily(datafam); - - HColumnDescriptor lowWatermarkFam = new HColumnDescriptor(lowWatermarkFamily); - lowWatermarkFam.setMaxVersions(Integer.MAX_VALUE); - desc.addFamily(lowWatermarkFam); - - // Move to HBaseSims for 2.0 support - // For 2.0, use TableDescriptorBuilder to build TableDescriptor + ArrayList<ColumnFamilyDescriptor> fams = new ArrayList<>(); + fams.add(ColumnFamilyDescriptorBuilder + .newBuilder(commitTableFamily) + .setMaxVersions(Integer.MAX_VALUE) + .build()); + fams.add(ColumnFamilyDescriptorBuilder + .newBuilder(lowWatermarkFamily) + .setMaxVersions(Integer.MAX_VALUE) + .build()); + + TableDescriptor desc = TableDescriptorBuilder + .newBuilder(TABLE_NAME) + .setColumnFamilies(fams) + .build(); admin.createTable(desc); } if (admin.isTableDisabled(TableName.valueOf(TEST_TABLE))) { admin.enableTable(TableName.valueOf(TEST_TABLE)); } - HTableDescriptor[] tables = admin.listTables(); - for (HTableDescriptor t : tables) { - LOG.info(t.getNameAsString()); + List<TableDescriptor> tables = admin.listTableDescriptors(); + for (TableDescriptor t : tables) { + LOG.info(t.getTableName().getNameAsString()); } } @@ -121,7 +128,7 @@ public class TestHBaseCommitTable { public void tearDown() { try { LOG.info("tearing Down"); - Admin admin = testutil.getHBaseAdmin(); + Admin admin = testutil.getAdmin(); admin.disableTable(TableName.valueOf(TEST_TABLE)); admin.deleteTable(TableName.valueOf(TEST_TABLE)); diff --git a/hbase-common/src/main/java/org/apache/omid/committable/hbase/RegionSplitter.java b/hbase-common/src/main/java/org/apache/omid/committable/hbase/RegionSplitter.java index 635939e5..6b4ecf13 100644 --- a/hbase-common/src/main/java/org/apache/omid/committable/hbase/RegionSplitter.java +++ b/hbase-common/src/main/java/org/apache/omid/committable/hbase/RegionSplitter.java @@ -167,7 +167,7 @@ public class RegionSplitter { } } try { - return splitClass.asSubclass(SplitAlgorithm.class).newInstance(); + return splitClass.asSubclass(SplitAlgorithm.class).getDeclaredConstructor().newInstance(); } catch (Exception e) { throw new IOException("Problem loading split algorithm: ", e); } diff --git a/hbase-common/src/main/java/org/apache/omid/transaction/CellUtils.java b/hbase-common/src/main/java/org/apache/omid/transaction/CellUtils.java index d5536879..15ac1404 100644 --- a/hbase-common/src/main/java/org/apache/omid/transaction/CellUtils.java +++ b/hbase-common/src/main/java/org/apache/omid/transaction/CellUtils.java @@ -85,7 +85,7 @@ public final class CellUtils { throws IOException { Get get = new Get(row); get.addColumn(family, qualifier); - get.setTimeStamp(version); + get.setTimestamp(version); Result result = cellGetter.get(get); @@ -402,7 +402,7 @@ public final class CellUtils { Cell otherCell = otherCellId.getCell(); // Row comparison - if (!CellUtil.matchingRow(otherCell, cell)) { + if (!CellUtil.matchingRows(otherCell, cell)) { return false; } diff --git a/hbase-coprocessor/src/main/java/org/apache/hadoop/hbase/regionserver/CompactorScanner.java b/hbase-coprocessor/src/main/java/org/apache/hadoop/hbase/regionserver/CompactorScanner.java index 1c36859f..acb1ce6a 100644 --- a/hbase-coprocessor/src/main/java/org/apache/hadoop/hbase/regionserver/CompactorScanner.java +++ b/hbase-coprocessor/src/main/java/org/apache/hadoop/hbase/regionserver/CompactorScanner.java @@ -28,6 +28,7 @@ import org.apache.omid.committable.CommitTable.CommitTimestamp; import org.apache.omid.transaction.CellUtils; import org.apache.omid.transaction.CellInfo; import org.apache.hadoop.hbase.Cell; +import org.apache.hadoop.hbase.CellComparator; import org.apache.hadoop.hbase.CellUtil; import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.client.Get; @@ -165,7 +166,7 @@ public class CompactorScanner implements InternalScanner { retainLastTimestampedCellsSaved(currentRowWorthValues, lastTimestampedCellsInRow); // 4) Sort the list - Collections.sort(currentRowWorthValues, KeyValue.COMPARATOR); + Collections.sort(currentRowWorthValues, CellComparator.getInstance()); } // Chomp current row worth values up to the limit @@ -192,7 +193,7 @@ public class CompactorScanner implements InternalScanner { @VisibleForTesting public boolean shouldRetainNonTransactionallyDeletedCell(Cell cell) { - return (CellUtil.isDelete(cell) || CellUtil.isDeleteFamily(cell)) + return (CellUtil.isDelete(cell) || cell.getType() == Cell.Type.DeleteFamily) && retainNonTransactionallyDeletedCells; } @@ -232,7 +233,7 @@ public class CompactorScanner implements InternalScanner { private Result getShadowCell(byte[] row, byte[] family, byte[] qualifier, long timestamp) throws IOException { Get g = new Get(row); g.addColumn(family, qualifier); - g.setTimeStamp(timestamp); + g.setTimestamp(timestamp); Result r = hRegion.get(g); return r; } diff --git a/hbase-coprocessor/src/main/java/org/apache/omid/transaction/CellSkipFilterBase.java b/hbase-coprocessor/src/main/java/org/apache/omid/transaction/CellSkipFilterBase.java index 52ebaedc..9560770a 100644 --- a/hbase-coprocessor/src/main/java/org/apache/omid/transaction/CellSkipFilterBase.java +++ b/hbase-coprocessor/src/main/java/org/apache/omid/transaction/CellSkipFilterBase.java @@ -19,8 +19,7 @@ package org.apache.omid.transaction; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.CellUtil; -import org.apache.hadoop.hbase.KeyValue; -import org.apache.hadoop.hbase.KeyValueUtil; +import org.apache.hadoop.hbase.PrivateCellUtil; import org.apache.hadoop.hbase.filter.Filter; import org.apache.hadoop.hbase.filter.FilterBase; @@ -28,17 +27,17 @@ import java.io.IOException; import java.util.List; /** - * {@link Filter} that encapsulates another {@link Filter}. It remembers the last {@link KeyValue} + * {@link Filter} that encapsulates another {@link Filter}. It remembers the last {@link Cell} * for which the underlying filter returned the {@link ReturnCode#NEXT_COL} or {@link ReturnCode#INCLUDE_AND_NEXT_COL}, - * so that when {@link #filterKeyValue} is called again for the same {@link KeyValue} with different + * so that when {@link #filterCell} is called again for the same {@link Cell} with different * version, it returns {@link ReturnCode#NEXT_COL} directly without consulting the underlying {@link Filter}. * Please see TEPHRA-169 for more details. */ public class CellSkipFilterBase extends FilterBase { private final Filter filter; - // remember the previous keyvalue processed by filter when the return code was NEXT_COL or INCLUDE_AND_NEXT_COL - private KeyValue skipColumn = null; + // remember the previous cell processed by filter when the return code was NEXT_COL or INCLUDE_AND_NEXT_COL + private Cell skipColumn = null; public CellSkipFilterBase(Filter filter) { this.filter = filter; @@ -46,31 +45,37 @@ public class CellSkipFilterBase extends FilterBase { /** * Determines whether the current cell should be skipped. The cell will be skipped - * if the previous keyvalue had the same key as the current cell. This means filter already responded - * for the previous keyvalue with ReturnCode.NEXT_COL or ReturnCode.INCLUDE_AND_NEXT_COL. + * if the previous cell had the same key as the current cell. This means filter already responded + * for the previous cell with ReturnCode.NEXT_COL or ReturnCode.INCLUDE_AND_NEXT_COL. * @param cell the {@link Cell} to be tested for skipping * @return true is current cell should be skipped, false otherwise */ private boolean skipCellVersion(Cell cell) { return skipColumn != null - && CellUtil.matchingRow(cell, skipColumn.getRowArray(), skipColumn.getRowOffset(), - skipColumn.getRowLength()) - && CellUtil.matchingFamily(cell, skipColumn.getFamilyArray(), skipColumn.getFamilyOffset(), - skipColumn.getFamilyLength()) - && CellUtil.matchingQualifier(cell, skipColumn.getQualifierArray(), skipColumn.getQualifierOffset(), - skipColumn.getQualifierLength()); + && CellUtil.matchingRows(cell, skipColumn) + && CellUtil.matchingFamily(cell, skipColumn) + && CellUtil.matchingQualifier(cell, skipColumn); } + /** + * This deprecated method is implemented for backwards compatibility reasons. + * use {@link CellSkipFilterBase#filterKeyValue(Cell)} + */ @Override public ReturnCode filterKeyValue(Cell cell) throws IOException { + return filterCell(cell); + } + + @Override + public ReturnCode filterCell(Cell cell) throws IOException { if (skipCellVersion(cell)) { return ReturnCode.NEXT_COL; } - ReturnCode code = filter.filterKeyValue(cell); + ReturnCode code = filter.filterCell(cell); if (code == ReturnCode.NEXT_COL || code == ReturnCode.INCLUDE_AND_NEXT_COL) { // only store the reference to the keyvalue if we are returning NEXT_COL or INCLUDE_AND_NEXT_COL - skipColumn = KeyValueUtil.createFirstOnRow(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(), + skipColumn = PrivateCellUtil.createFirstOnRow(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(), cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength(), cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength()); @@ -95,11 +100,20 @@ public class CellSkipFilterBase extends FilterBase { filter.reset(); } + /** + * This deprecated method is implemented for backwards compatibility reasons. + * use {@link CellSkipFilterBase#filterRowKey(Cell)} + */ @Override public boolean filterRowKey(byte[] buffer, int offset, int length) throws IOException { return filter.filterRowKey(buffer, offset, length); } + @Override + public boolean filterRowKey(Cell cell) throws IOException { + return filter.filterRowKey(cell); + } + @Override public boolean filterAllRemaining() throws IOException { return filter.filterAllRemaining(); diff --git a/hbase-coprocessor/src/main/java/org/apache/omid/transaction/OmidSnapshotFilter.java b/hbase-coprocessor/src/main/java/org/apache/omid/transaction/OmidSnapshotFilter.java index df59d45b..6896628a 100644 --- a/hbase-coprocessor/src/main/java/org/apache/omid/transaction/OmidSnapshotFilter.java +++ b/hbase-coprocessor/src/main/java/org/apache/omid/transaction/OmidSnapshotFilter.java @@ -120,7 +120,7 @@ public class OmidSnapshotFilter extends BaseRegionObserver { SnapshotFilterImpl snapshotFilter = getSnapshotFilter(e); snapshotFilterMap.put(get, snapshotFilter); - get.setMaxVersions(); + get.readAllVersions(); Filter newFilter = TransactionFilters.getVisibilityFilter(get.getFilter(), snapshotFilter, hbaseTransaction); get.setFilter(newFilter); @@ -159,7 +159,7 @@ public class OmidSnapshotFilter extends BaseRegionObserver { HBaseTransaction hbaseTransaction = getHBaseTransaction(byteTransaction, isLowLatency); SnapshotFilterImpl snapshotFilter = getSnapshotFilter(e); - scan.setMaxVersions(); + scan.readAllVersions(); Filter newFilter = TransactionFilters.getVisibilityFilter(scan.getFilter(), snapshotFilter, hbaseTransaction); scan.setFilter(newFilter); diff --git a/hbase-coprocessor/src/main/java/org/apache/omid/transaction/TransactionVisibilityFilterBase.java b/hbase-coprocessor/src/main/java/org/apache/omid/transaction/TransactionVisibilityFilterBase.java index 35552b98..8fa44825 100644 --- a/hbase-coprocessor/src/main/java/org/apache/omid/transaction/TransactionVisibilityFilterBase.java +++ b/hbase-coprocessor/src/main/java/org/apache/omid/transaction/TransactionVisibilityFilterBase.java @@ -62,8 +62,17 @@ public class TransactionVisibilityFilterBase extends FilterBase { } + /** + * This deprecated method is implemented for backwards compatibility reasons. + * use {@link TransactionVisibilityFilterBase#filterCell(Cell)} + */ @Override - public ReturnCode filterKeyValue(Cell v) throws IOException { + public ReturnCode filterKeyValue(Cell cell) throws IOException { + return filterCell(cell); + } + + @Override + public ReturnCode filterCell(Cell v) throws IOException { if (CellUtils.isShadowCell(v)) { Long commitTs = Bytes.toLong(CellUtil.cloneValue(v)); commitCache.put(v.getTimestamp(), commitTs); @@ -124,7 +133,7 @@ public class TransactionVisibilityFilterBase extends FilterBase { return snapshotReturn; } - ReturnCode userRes = userFilter.filterKeyValue(v); + ReturnCode userRes = userFilter.filterCell(v); switch (userRes) { case INCLUDE: return snapshotReturn; @@ -154,7 +163,7 @@ public class TransactionVisibilityFilterBase extends FilterBase { // Try to get shadow cell from region final Get get = new Get(CellUtil.cloneRow(v)); - get.setTimeStamp(v.getTimestamp()).setMaxVersions(1); + get.setTimestamp(v.getTimestamp()).readVersions(1); get.addColumn(CellUtil.cloneFamily(v), CellUtils.addShadowCellSuffixPrefix(CellUtils.FAMILY_DELETE_QUALIFIER)); Result shadowCell = snapshotFilter.getTableAccessWrapper().get(get); @@ -193,7 +202,10 @@ public class TransactionVisibilityFilterBase extends FilterBase { return super.filterRow(); } - + /** + * This deprecated method is implemented for backwards compatibility reasons. + * use {@link TransactionVisibilityFilterBase#filterRowKey(Cell)} + */ @Override public boolean filterRowKey(byte[] buffer, int offset, int length) throws IOException { if (userFilter != null) { @@ -202,6 +214,14 @@ public class TransactionVisibilityFilterBase extends FilterBase { return super.filterRowKey(buffer, offset, length); } + @Override + public boolean filterRowKey(Cell cell) throws IOException { + if (userFilter != null) { + return userFilter.filterRowKey(cell); + } + return super.filterRowKey(cell); + } + @Override public boolean filterAllRemaining() throws IOException { if (userFilter != null) { diff --git a/hbase-coprocessor/src/test/java/org/apache/omid/transaction/TestCompaction.java b/hbase-coprocessor/src/test/java/org/apache/omid/transaction/TestCompaction.java index bdbf2e1d..ca2dfae3 100644 --- a/hbase-coprocessor/src/test/java/org/apache/omid/transaction/TestCompaction.java +++ b/hbase-coprocessor/src/test/java/org/apache/omid/transaction/TestCompaction.java @@ -41,13 +41,14 @@ import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.CellUtil; import org.apache.hadoop.hbase.Coprocessor; import org.apache.hadoop.hbase.HBaseTestingUtility; -import org.apache.hadoop.hbase.HColumnDescriptor; -import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.MiniHBaseCluster; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Admin; +import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor; +import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; +import org.apache.hadoop.hbase.client.CoprocessorDescriptorBuilder; import org.apache.hadoop.hbase.client.Delete; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.Put; @@ -57,6 +58,8 @@ import org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException; import org.apache.hadoop.hbase.client.Row; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.client.Table; +import org.apache.hadoop.hbase.client.TableDescriptor; +import org.apache.hadoop.hbase.client.TableDescriptorBuilder; import org.apache.hadoop.hbase.regionserver.HRegion; import org.apache.hadoop.hbase.util.Bytes; import org.apache.omid.TestUtils; @@ -154,15 +157,21 @@ public class TestCompaction { private void createTableIfNotExists(String tableName, byte[]... families) throws IOException { if (!admin.tableExists(TableName.valueOf(tableName))) { LOG.info("Creating {} table...", tableName); - HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(tableName)); + ArrayList<ColumnFamilyDescriptor> fams = new ArrayList<>(); for (byte[] family : families) { - HColumnDescriptor datafam = new HColumnDescriptor(family); - datafam.setMaxVersions(MAX_VERSIONS); - desc.addFamily(datafam); + fams.add(ColumnFamilyDescriptorBuilder + .newBuilder(family) + .setMaxVersions(MAX_VERSIONS) + .build()); } - - desc.addCoprocessor("org.apache.hadoop.hbase.coprocessor.AggregateImplementation",null,Coprocessor.PRIORITY_HIGHEST,null); + TableDescriptor desc = TableDescriptorBuilder + .newBuilder(TableName.valueOf(tableName)) + .setColumnFamilies(fams) + .setCoprocessor(CoprocessorDescriptorBuilder + .newBuilder("org.apache.hadoop.hbase.coprocessor.AggregateImplementation") + .setPriority(Coprocessor.PRIORITY_HIGHEST).build()) + .build(); admin.createTable(desc); for (byte[] family : families) { CompactorUtil.enableOmidCompaction(connection, TableName.valueOf(tableName), family); @@ -521,7 +530,7 @@ public class TestCompaction { Transaction tx = tm.begin(); Get get = new Get(Bytes.toBytes(rowId)); - get.setMaxVersions(2 * MAX_VERSIONS); + get.readVersions(2 * MAX_VERSIONS); assertEquals(get.getMaxVersions(), (2 * MAX_VERSIONS), "Max versions should be set to " + (2 * MAX_VERSIONS)); get.addColumn(fam, qual); Result result = txTable.get(tx, get); @@ -542,7 +551,7 @@ public class TestCompaction { tx = tm.begin(); get = new Get(Bytes.toBytes(rowId)); - get.setMaxVersions(2 * MAX_VERSIONS); + get.readVersions(2 * MAX_VERSIONS); assertEquals(get.getMaxVersions(), (2 * MAX_VERSIONS), "Max versions should be set to " + (2 * MAX_VERSIONS)); get.addColumn(fam, qual); result = txTable.get(tx, get); @@ -786,9 +795,11 @@ public class TestCompaction { admin.disableTable(TableName.valueOf(TEST_TABLE)); byte[] nonOmidCF = Bytes.toBytes("nonOmidCF"); byte[] nonOmidQual = Bytes.toBytes("nonOmidCol"); - HColumnDescriptor nonomidfam = new HColumnDescriptor(nonOmidCF); - nonomidfam.setMaxVersions(MAX_VERSIONS); - admin.addColumn(TableName.valueOf(TEST_TABLE), nonomidfam); + ColumnFamilyDescriptor nonomidfam = ColumnFamilyDescriptorBuilder + .newBuilder(nonOmidCF) + .setMaxVersions(MAX_VERSIONS) + .build(); + admin.addColumnFamily(TableName.valueOf(TEST_TABLE), nonomidfam); admin.enableTable(TableName.valueOf(TEST_TABLE)); byte[] rowId = Bytes.toBytes("testRow"); diff --git a/hbase-coprocessor/src/test/java/org/apache/omid/transaction/TestCompactionLL.java b/hbase-coprocessor/src/test/java/org/apache/omid/transaction/TestCompactionLL.java index a6ccbe64..38623d8a 100644 --- a/hbase-coprocessor/src/test/java/org/apache/omid/transaction/TestCompactionLL.java +++ b/hbase-coprocessor/src/test/java/org/apache/omid/transaction/TestCompactionLL.java @@ -28,8 +28,7 @@ import static org.testng.Assert.assertTrue; import static org.testng.Assert.fail; import java.io.IOException; - - +import java.util.ArrayList; import java.util.Random; import org.apache.hadoop.conf.Configuration; @@ -37,20 +36,20 @@ import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Coprocessor; import org.apache.hadoop.hbase.HBaseTestingUtility; -import org.apache.hadoop.hbase.HColumnDescriptor; -import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.MiniHBaseCluster; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Admin; +import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor; +import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; - +import org.apache.hadoop.hbase.client.CoprocessorDescriptorBuilder; import org.apache.hadoop.hbase.client.Put; - import org.apache.hadoop.hbase.client.ResultScanner; - import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.client.Table; +import org.apache.hadoop.hbase.client.TableDescriptor; +import org.apache.hadoop.hbase.client.TableDescriptorBuilder; import org.apache.hadoop.hbase.util.Bytes; import org.apache.omid.TestUtils; @@ -147,15 +146,21 @@ public class TestCompactionLL { private void createTableIfNotExists(String tableName, byte[]... families) throws IOException { if (!admin.tableExists(TableName.valueOf(tableName))) { LOG.info("Creating {} table...", tableName); - HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(tableName)); + ArrayList<ColumnFamilyDescriptor> fams = new ArrayList<>(); for (byte[] family : families) { - HColumnDescriptor datafam = new HColumnDescriptor(family); - datafam.setMaxVersions(MAX_VERSIONS); - desc.addFamily(datafam); + fams.add(ColumnFamilyDescriptorBuilder + .newBuilder(family) + .setMaxVersions(MAX_VERSIONS) + .build()); } - - desc.addCoprocessor("org.apache.hadoop.hbase.coprocessor.AggregateImplementation",null,Coprocessor.PRIORITY_HIGHEST,null); + TableDescriptor desc = TableDescriptorBuilder + .newBuilder(TableName.valueOf(tableName)) + .setColumnFamilies(fams) + .setCoprocessor(CoprocessorDescriptorBuilder + .newBuilder("org.apache.hadoop.hbase.coprocessor.AggregateImplementation") + .setPriority(Coprocessor.PRIORITY_HIGHEST).build()) + .build(); admin.createTable(desc); for (byte[] family : families) { CompactorUtil.enableOmidCompaction(connection, TableName.valueOf(tableName), family); diff --git a/hbase-coprocessor/src/test/java/org/apache/omid/transaction/TestCompactorScanner.java b/hbase-coprocessor/src/test/java/org/apache/omid/transaction/TestCompactorScanner.java index 7320ccc7..aa86a737 100644 --- a/hbase-coprocessor/src/test/java/org/apache/omid/transaction/TestCompactorScanner.java +++ b/hbase-coprocessor/src/test/java/org/apache/omid/transaction/TestCompactorScanner.java @@ -18,9 +18,9 @@ package org.apache.omid.transaction; import org.apache.phoenix.thirdparty.com.google.common.util.concurrent.SettableFuture; -import org.apache.hadoop.hbase.HRegionInfo; import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.KeyValue.Type; +import org.apache.hadoop.hbase.client.RegionInfo; import org.apache.hadoop.hbase.coprocessor.ObserverContext; import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment; import org.apache.hadoop.hbase.regionserver.CompactorScanner; @@ -67,7 +67,7 @@ public class TestCompactorScanner { RegionCoprocessorEnvironment rce = mock(RegionCoprocessorEnvironment.class); HRegion hRegion = mock(HRegion.class); - HRegionInfo hRegionInfo = mock(HRegionInfo.class); + RegionInfo regionInfo = mock(RegionInfo.class); SettableFuture<Long> f = SettableFuture.create(); // Wire required mock internals @@ -75,7 +75,7 @@ public class TestCompactorScanner { when(ctClient.readLowWatermark()).thenReturn(f); when(ctx.getEnvironment()).thenReturn(rce); when(rce.getRegion()).thenReturn(hRegion); - when(hRegion.getRegionInfo()).thenReturn(hRegionInfo); + when(hRegion.getRegionInfo()).thenReturn(regionInfo); LOG.info("Testing when retain is {}", retainOption); try (CompactorScanner scanner = spy(new CompactorScanner(ctx, diff --git a/hbase-coprocessor/src/test/java/org/apache/omid/transaction/TestSnapshotFilter.java b/hbase-coprocessor/src/test/java/org/apache/omid/transaction/TestSnapshotFilter.java index ce52b68c..c07679a3 100644 --- a/hbase-coprocessor/src/test/java/org/apache/omid/transaction/TestSnapshotFilter.java +++ b/hbase-coprocessor/src/test/java/org/apache/omid/transaction/TestSnapshotFilter.java @@ -26,21 +26,24 @@ import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; import java.io.IOException; +import java.util.ArrayList; import java.util.Map; import java.util.concurrent.CountDownLatch; import java.util.concurrent.atomic.AtomicBoolean; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Cell; +import org.apache.hadoop.hbase.CompareOperator; import org.apache.hadoop.hbase.Coprocessor; import org.apache.hadoop.hbase.HBaseTestingUtility; -import org.apache.hadoop.hbase.HColumnDescriptor; -import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.MiniHBaseCluster; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Admin; +import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor; +import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; +import org.apache.hadoop.hbase.client.CoprocessorDescriptorBuilder; import org.apache.hadoop.hbase.client.Delete; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.Put; @@ -48,8 +51,9 @@ import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.ResultScanner; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.client.Table; +import org.apache.hadoop.hbase.client.TableDescriptor; +import org.apache.hadoop.hbase.client.TableDescriptorBuilder; import org.apache.hadoop.hbase.filter.BinaryComparator; -import org.apache.hadoop.hbase.filter.CompareFilter; import org.apache.hadoop.hbase.filter.FamilyFilter; import org.apache.hadoop.hbase.filter.Filter; import org.apache.hadoop.hbase.filter.FilterList; @@ -155,19 +159,25 @@ public class TestSnapshotFilter { private void createTableIfNotExists(String tableName, byte[]... families) throws IOException { if (!admin.tableExists(TableName.valueOf(tableName))) { LOG.info("Creating {} table...", tableName); - HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(tableName)); + ArrayList<ColumnFamilyDescriptor> fams = new ArrayList<>(); for (byte[] family : families) { - HColumnDescriptor datafam = new HColumnDescriptor(family); - datafam.setMaxVersions(MAX_VERSIONS); - desc.addFamily(datafam); + fams.add(ColumnFamilyDescriptorBuilder + .newBuilder(family) + .setMaxVersions(MAX_VERSIONS) + .build()); } - int priority = Coprocessor.PRIORITY_HIGHEST; - - desc.addCoprocessor(OmidSnapshotFilter.class.getName(),null,++priority,null); - desc.addCoprocessor("org.apache.hadoop.hbase.coprocessor.AggregateImplementation",null,++priority,null); - + TableDescriptor desc = TableDescriptorBuilder + .newBuilder(TableName.valueOf(tableName)) + .setColumnFamilies(fams) + .setCoprocessor(CoprocessorDescriptorBuilder + .newBuilder(OmidSnapshotFilter.class.getName()) + .setPriority(++priority).build()) + .setCoprocessor(CoprocessorDescriptorBuilder + .newBuilder("org.apache.hadoop.hbase.coprocessor.AggregateImplementation") + .setPriority(++priority).build()) + .build(); admin.createTable(desc); try { hbaseTestUtil.waitTableAvailable(TableName.valueOf(tableName),5000); @@ -305,7 +315,7 @@ public class TestSnapshotFilter { SingleColumnValueFilter filter = new SingleColumnValueFilter( famName1, colName1, - CompareFilter.CompareOp.EQUAL, + CompareOperator.EQUAL, new SubstringComparator("testWrite-1")); get.setFilter(filter); @@ -346,7 +356,7 @@ public class TestSnapshotFilter { SingleColumnValueFilter filter = new SingleColumnValueFilter( famName1, colName1, - CompareFilter.CompareOp.EQUAL, + CompareOperator.EQUAL, new SubstringComparator("testWrite-1")); @@ -400,8 +410,8 @@ public class TestSnapshotFilter { Get get = new Get(rowName1); Filter filter1 = new FilterList(FilterList.Operator.MUST_PASS_ONE, - new FamilyFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes(TEST_FAMILY))), - new FamilyFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator(famName2))); + new FamilyFilter(CompareOperator.EQUAL, new BinaryComparator(Bytes.toBytes(TEST_FAMILY))), + new FamilyFilter(CompareOperator.EQUAL, new BinaryComparator(famName2))); get.setFilter(filter1); Result result = tt.get(tx4, get); @@ -462,8 +472,8 @@ public class TestSnapshotFilter { Get get = new Get(rowName1); Filter filter1 = new FilterList(FilterList.Operator.MUST_PASS_ONE, - new FamilyFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes(TEST_FAMILY))), - new FamilyFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator(famName2))); + new FamilyFilter(CompareOperator.EQUAL, new BinaryComparator(Bytes.toBytes(TEST_FAMILY))), + new FamilyFilter(CompareOperator.EQUAL, new BinaryComparator(famName2))); get.setFilter(filter1); Result result = tt.get(tx4, get); @@ -531,8 +541,8 @@ public class TestSnapshotFilter { Get get = new Get(rowName1); Filter filter1 = new FilterList(FilterList.Operator.MUST_PASS_ONE, - new FamilyFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes(TEST_FAMILY))), - new FamilyFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator(famName2))); + new FamilyFilter(CompareOperator.EQUAL, new BinaryComparator(Bytes.toBytes(TEST_FAMILY))), + new FamilyFilter(CompareOperator.EQUAL, new BinaryComparator(famName2))); get.setFilter(filter1); Result result = tt.get(tx3, get); @@ -540,7 +550,7 @@ public class TestSnapshotFilter { Filter filter2 = new FilterList(FilterList.Operator.MUST_PASS_ONE, - new FamilyFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes(TEST_FAMILY)))); + new FamilyFilter(CompareOperator.EQUAL, new BinaryComparator(Bytes.toBytes(TEST_FAMILY)))); get.setFilter(filter2); result = tt.get(tx3, get); @@ -613,7 +623,7 @@ public class TestSnapshotFilter { Transaction tx2 = tm.begin(); - ResultScanner iterableRS = tt.getScanner(tx2, new Scan().setStartRow(rowName1).setStopRow(rowName1)); + ResultScanner iterableRS = tt.getScanner(tx2, new Scan().withStartRow(rowName1).withStopRow(rowName1, true)); Result result = iterableRS.next(); long tsRow = result.rawCells()[0].getTimestamp(); assertEquals(tsRow, tx1.getTransactionId(), "Reading differnt version"); @@ -632,7 +642,7 @@ public class TestSnapshotFilter { Transaction tx4 = tm.begin(); - ResultScanner iterableRS2 = tt.getScanner(tx4, new Scan().setStartRow(rowName1).setStopRow(rowName1)); + ResultScanner iterableRS2 = tt.getScanner(tx4, new Scan().withStartRow(rowName1).withStopRow(rowName1, true)); Result result2 = iterableRS2.next(); long tsRow2 = result2.rawCells()[0].getTimestamp(); assertEquals(tsRow2, tx3.getTransactionId(), "Reading differnt version"); @@ -674,8 +684,8 @@ public class TestSnapshotFilter { Scan scan = new Scan(); scan.setFilter(new FilterList(FilterList.Operator.MUST_PASS_ONE, - new FamilyFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes(TEST_FAMILY))))); - scan.setStartRow(rowName1).setStopRow(rowName1); + new FamilyFilter(CompareOperator.EQUAL, new BinaryComparator(Bytes.toBytes(TEST_FAMILY))))); + scan.withStartRow(rowName1).withStopRow(rowName1, true); ResultScanner iterableRS = tt.getScanner(tx3, scan); Result result = iterableRS.next(); @@ -683,8 +693,8 @@ public class TestSnapshotFilter { assertFalse(result.containsColumn(famName2, colName2)); scan.setFilter(new FilterList(FilterList.Operator.MUST_PASS_ONE, - new FamilyFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes(TEST_FAMILY))), - new FamilyFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator(famName2)))); + new FamilyFilter(CompareOperator.EQUAL, new BinaryComparator(Bytes.toBytes(TEST_FAMILY))), + new FamilyFilter(CompareOperator.EQUAL, new BinaryComparator(famName2)))); iterableRS = tt.getScanner(tx3, scan); result = iterableRS.next(); @@ -724,7 +734,7 @@ public class TestSnapshotFilter { Transaction tx3 = tm.begin(); - ResultScanner iterableRS = tt.getScanner(tx3, new Scan().setStartRow(rowName1).setStopRow(rowName1)); + ResultScanner iterableRS = tt.getScanner(tx3, new Scan().withStartRow(rowName1).withStopRow(rowName1, true)); Result result = iterableRS.next(); long tsRow = result.rawCells()[0].getTimestamp(); assertEquals(tsRow, tx1.getTransactionId(), "Reading differnt version"); @@ -770,7 +780,7 @@ public class TestSnapshotFilter { Transaction tx3 = tm.begin(); - ResultScanner iterableRS = tt.getScanner(tx3, new Scan().setStartRow(rowName1).setStopRow(rowName3)); + ResultScanner iterableRS = tt.getScanner(tx3, new Scan().withStartRow(rowName1).withStopRow(rowName3)); Result result = iterableRS.next(); long tsRow = result.rawCells()[0].getTimestamp(); assertEquals(tsRow, tx1.getTransactionId(), "Reading differnt version"); @@ -823,7 +833,7 @@ public class TestSnapshotFilter { Transaction tx3 = tm.begin(); - ResultScanner iterableRS = tt.getScanner(tx3, new Scan().setStartRow(rowName1).setStopRow(rowName3)); + ResultScanner iterableRS = tt.getScanner(tx3, new Scan().withStartRow(rowName1).withStopRow(rowName3)); Result result = iterableRS.next(); long tsRow = result.rawCells()[0].getTimestamp(); assertEquals(tsRow, tx1.getTransactionId(), "Reading differnt version"); @@ -874,7 +884,7 @@ public class TestSnapshotFilter { Transaction tx3 = tm.begin(); - ResultScanner iterableRS = tt.getScanner(tx3, new Scan().setStartRow(rowName1).setStopRow(rowName3)); + ResultScanner iterableRS = tt.getScanner(tx3, new Scan().withStartRow(rowName1).withStopRow(rowName3)); Result result = iterableRS.next(); long tsRow = result.rawCells()[0].getTimestamp(); assertEquals(tsRow, tx1.getTransactionId(), "Reading differnt version"); @@ -924,7 +934,7 @@ public class TestSnapshotFilter { for(Result row: scanner) { for(Cell cell: row.rawCells()) { - newFilter.filterKeyValue(cell); + newFilter.filterCell(cell); } } @@ -969,7 +979,7 @@ public class TestSnapshotFilter { for(Result row: scanner) { for(Cell cell: row.rawCells()) { - newFilter.filterKeyValue(cell); + newFilter.filterCell(cell); } } verify(snapshotFilter, Mockito.times(1)) diff --git a/hbase-coprocessor/src/test/java/org/apache/omid/transaction/TestSnapshotFilterLL.java b/hbase-coprocessor/src/test/java/org/apache/omid/transaction/TestSnapshotFilterLL.java index db1174a6..75a3c765 100644 --- a/hbase-coprocessor/src/test/java/org/apache/omid/transaction/TestSnapshotFilterLL.java +++ b/hbase-coprocessor/src/test/java/org/apache/omid/transaction/TestSnapshotFilterLL.java @@ -21,22 +21,26 @@ import static org.mockito.Mockito.spy; import static org.testng.Assert.assertTrue; import java.io.IOException; +import java.util.ArrayList; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Coprocessor; import org.apache.hadoop.hbase.HBaseTestingUtility; -import org.apache.hadoop.hbase.HColumnDescriptor; -import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.MiniHBaseCluster; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Admin; +import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor; +import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; +import org.apache.hadoop.hbase.client.CoprocessorDescriptorBuilder; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.ResultScanner; import org.apache.hadoop.hbase.client.Scan; +import org.apache.hadoop.hbase.client.TableDescriptor; +import org.apache.hadoop.hbase.client.TableDescriptorBuilder; import org.apache.hadoop.hbase.util.Bytes; import org.apache.omid.TestUtils; import org.apache.omid.committable.CommitTable; @@ -133,19 +137,25 @@ public class TestSnapshotFilterLL { private void createTableIfNotExists(String tableName, byte[]... families) throws IOException { if (!admin.tableExists(TableName.valueOf(tableName))) { LOG.info("Creating {} table...", tableName); - HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(tableName)); - + + ArrayList<ColumnFamilyDescriptor> fams = new ArrayList<>(); for (byte[] family : families) { - HColumnDescriptor datafam = new HColumnDescriptor(family); - datafam.setMaxVersions(MAX_VERSIONS); - desc.addFamily(datafam); + fams.add(ColumnFamilyDescriptorBuilder + .newBuilder(family) + .setMaxVersions(MAX_VERSIONS) + .build()); } - int priority = Coprocessor.PRIORITY_HIGHEST; - - desc.addCoprocessor(OmidSnapshotFilter.class.getName(),null,++priority,null); - desc.addCoprocessor("org.apache.hadoop.hbase.coprocessor.AggregateImplementation",null,++priority,null); - + TableDescriptor desc = TableDescriptorBuilder + .newBuilder(TableName.valueOf(tableName)) + .setColumnFamilies(fams) + .setCoprocessor(CoprocessorDescriptorBuilder + .newBuilder(OmidSnapshotFilter.class.getName()) + .setPriority(++priority).build()) + .setCoprocessor(CoprocessorDescriptorBuilder + .newBuilder("org.apache.hadoop.hbase.coprocessor.AggregateImplementation") + .setPriority(++priority).build()) + .build(); admin.createTable(desc); try { hbaseTestUtil.waitTableAvailable(TableName.valueOf(tableName),5000); @@ -251,7 +261,7 @@ public class TestSnapshotFilterLL { Transaction tx2 = tm.begin(); - ResultScanner iterableRS = tt.getScanner(tx2, new Scan().setStartRow(rowName1).setStopRow(rowName1)); + ResultScanner iterableRS = tt.getScanner(tx2, new Scan().withStartRow(rowName1).withStopRow(rowName1, true)); assertTrue(iterableRS.next() == null); tm.commit(tx2); diff --git a/hbase-tools/src/main/java/org/apache/omid/tools/hbase/OmidTableManager.java b/hbase-tools/src/main/java/org/apache/omid/tools/hbase/OmidTableManager.java index d62a5742..f9731cdc 100644 --- a/hbase-tools/src/main/java/org/apache/omid/tools/hbase/OmidTableManager.java +++ b/hbase-tools/src/main/java/org/apache/omid/tools/hbase/OmidTableManager.java @@ -18,15 +18,18 @@ package org.apache.omid.tools.hbase; import java.io.IOException; +import java.util.ArrayList; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; -import org.apache.hadoop.hbase.HColumnDescriptor; -import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Admin; +import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor; +import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; +import org.apache.hadoop.hbase.client.TableDescriptor; +import org.apache.hadoop.hbase.client.TableDescriptorBuilder; import org.apache.hadoop.hbase.util.Bytes; import org.apache.omid.committable.hbase.HBaseCommitTableConfig; import org.apache.omid.committable.hbase.KeyGenerator; @@ -152,18 +155,23 @@ public class OmidTableManager { return; } - HTableDescriptor tableDescriptor = new HTableDescriptor(TableName.valueOf(tableName)); - + ArrayList<ColumnFamilyDescriptor> fams = new ArrayList<>(); for (byte[] family : families) { - HColumnDescriptor colDescriptor = new HColumnDescriptor(family); - colDescriptor.setMaxVersions(maxVersions); - tableDescriptor.addFamily(colDescriptor); - LOG.info("\tAdding Family {}", colDescriptor); + fams.add(ColumnFamilyDescriptorBuilder + .newBuilder(family) + .setMaxVersions(maxVersions) + .build()); + LOG.info("\tAdding Family {}", fams.get(fams.size() - 1)); } - admin.createTable(tableDescriptor, splitKeys); + TableDescriptor desc = TableDescriptorBuilder + .newBuilder(TableName.valueOf(tableName)) + .setColumnFamilies(fams) + .build(); + + admin.createTable(desc, splitKeys); - LOG.info("Table {} created. Regions: {}", tableName, admin.getTableRegions(hTableName).size()); + LOG.info("Table {} created. Regions: {}", tableName, admin.getRegions(hTableName).size()); } diff --git a/hbase-tools/src/test/java/org/apache/omid/tools/hbase/TestOmidTableManager.java b/hbase-tools/src/test/java/org/apache/omid/tools/hbase/TestOmidTableManager.java index da04b122..92934df5 100644 --- a/hbase-tools/src/test/java/org/apache/omid/tools/hbase/TestOmidTableManager.java +++ b/hbase-tools/src/test/java/org/apache/omid/tools/hbase/TestOmidTableManager.java @@ -23,7 +23,7 @@ import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HBaseTestingUtility; import org.apache.hadoop.hbase.TableName; -import org.apache.hadoop.hbase.client.HBaseAdmin; +import org.apache.hadoop.hbase.client.Admin; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -37,7 +37,7 @@ public class TestOmidTableManager { private HBaseTestingUtility hBaseTestUtil; private Configuration hbaseConf; - private HBaseAdmin hBaseAdmin; + private Admin hBaseAdmin; @BeforeClass public void setUpClass() throws Exception { @@ -47,7 +47,7 @@ public class TestOmidTableManager { hBaseTestUtil = new HBaseTestingUtility(hbaseConf); hBaseTestUtil.startMiniCluster(1); - hBaseAdmin = hBaseTestUtil.getHBaseAdmin(); + hBaseAdmin = hBaseTestUtil.getAdmin(); } @AfterClass @@ -70,7 +70,7 @@ public class TestOmidTableManager { TableName tableName = TableName.valueOf(HBaseTimestampStorageConfig.DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME); assertTrue(hBaseAdmin.tableExists(tableName)); - int numRegions = hBaseAdmin.getTableRegions(tableName).size(); + int numRegions = hBaseAdmin.getRegions(tableName).size(); assertEquals(numRegions, 1, "Should have only 1 region"); } @@ -86,7 +86,7 @@ public class TestOmidTableManager { TableName tableName = TableName.valueOf(HBaseCommitTableConfig.DEFAULT_COMMIT_TABLE_NAME); assertTrue(hBaseAdmin.tableExists(tableName)); - int numRegions = hBaseAdmin.getTableRegions(tableName).size(); + int numRegions = hBaseAdmin.getRegions(tableName).size(); assertEquals(numRegions, 16, "Should have 16 regions"); } @@ -102,7 +102,7 @@ public class TestOmidTableManager { TableName tableName = TableName.valueOf("my-commit-table"); assertTrue(hBaseAdmin.tableExists(tableName)); - int numRegions = hBaseAdmin.getTableRegions(tableName).size(); + int numRegions = hBaseAdmin.getRegions(tableName).size(); assertEquals(numRegions, 1, "Should have only 1 regions"); } diff --git a/timestamp-storage/src/main/java/org/apache/omid/timestamp/storage/HBaseTimestampStorage.java b/timestamp-storage/src/main/java/org/apache/omid/timestamp/storage/HBaseTimestampStorage.java index 6ff23aa8..43de55a8 100644 --- a/timestamp-storage/src/main/java/org/apache/omid/timestamp/storage/HBaseTimestampStorage.java +++ b/timestamp-storage/src/main/java/org/apache/omid/timestamp/storage/HBaseTimestampStorage.java @@ -25,6 +25,7 @@ import javax.inject.Inject; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.TableName; +import org.apache.hadoop.hbase.client.CheckAndMutate; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; import org.apache.hadoop.hbase.client.Get; @@ -72,7 +73,10 @@ public class HBaseTimestampStorage implements TimestampStorage { if (previousMaxTimestamp != INITIAL_MAX_TS_VALUE) { previousVal = Bytes.toBytes(previousMaxTimestamp); } - if (!table.checkAndPut(TSO_ROW, cfName, TSO_QUALIFIER, previousVal, put)) { + CheckAndMutate checkAndPut = CheckAndMutate.newBuilder(TSO_ROW) + .ifEquals(cfName, TSO_QUALIFIER, previousVal) + .build(put); + if (!table.checkAndMutate(checkAndPut).isSuccess()) { throw new IOException("Previous max timestamp is incorrect"); } } diff --git a/timestamp-storage/src/test/java/org/apache/omid/timestamp/storage/TestHBaseTimestampStorage.java b/timestamp-storage/src/test/java/org/apache/omid/timestamp/storage/TestHBaseTimestampStorage.java index 86180acb..64d66972 100644 --- a/timestamp-storage/src/test/java/org/apache/omid/timestamp/storage/TestHBaseTimestampStorage.java +++ b/timestamp-storage/src/test/java/org/apache/omid/timestamp/storage/TestHBaseTimestampStorage.java @@ -20,11 +20,14 @@ package org.apache.omid.timestamp.storage; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HBaseTestingUtility; -import org.apache.hadoop.hbase.HColumnDescriptor; -import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.MiniHBaseCluster; import org.apache.hadoop.hbase.TableName; -import org.apache.hadoop.hbase.client.HBaseAdmin; +import org.apache.hadoop.hbase.client.Admin; +import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor; +import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder; +import org.apache.hadoop.hbase.client.TableDescriptor; +import org.apache.hadoop.hbase.client.TableDescriptorBuilder; +import org.apache.hadoop.hbase.util.Bytes; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.Assert; @@ -35,6 +38,7 @@ import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import java.io.IOException; +import java.util.List; import static org.apache.omid.timestamp.storage.HBaseTimestampStorageConfig.DEFAULT_TIMESTAMP_STORAGE_CF_NAME; import static org.apache.omid.timestamp.storage.HBaseTimestampStorageConfig.DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME; @@ -71,13 +75,17 @@ public class TestHBaseTimestampStorage { @BeforeMethod public void setUp() throws Exception { - HBaseAdmin admin = testutil.getHBaseAdmin(); + Admin admin = testutil.getAdmin(); if (!admin.tableExists(TableName.valueOf(DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME))) { - HTableDescriptor desc = new HTableDescriptor(TABLE_NAME); - HColumnDescriptor datafam = new HColumnDescriptor(DEFAULT_TIMESTAMP_STORAGE_CF_NAME); - datafam.setMaxVersions(Integer.MAX_VALUE); - desc.addFamily(datafam); + ColumnFamilyDescriptor datafam = ColumnFamilyDescriptorBuilder + .newBuilder(Bytes.toBytes(DEFAULT_TIMESTAMP_STORAGE_CF_NAME)) + .setMaxVersions(Integer.MAX_VALUE) + .build(); + TableDescriptor desc = TableDescriptorBuilder + .newBuilder(TABLE_NAME) + .setColumnFamily(datafam) + .build(); admin.createTable(desc); } @@ -85,9 +93,9 @@ public class TestHBaseTimestampStorage { if (admin.isTableDisabled(TableName.valueOf(DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME))) { admin.enableTable(TableName.valueOf(DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME)); } - HTableDescriptor[] tables = admin.listTables(); - for (HTableDescriptor t : tables) { - LOG.info(t.getNameAsString()); + List<TableDescriptor> tables = admin.listTableDescriptors(); + for (TableDescriptor t : tables) { + LOG.info(t.getTableName().getNameAsString()); } } @@ -95,7 +103,7 @@ public class TestHBaseTimestampStorage { public void tearDown() { try { LOG.info("tearing Down"); - HBaseAdmin admin = testutil.getHBaseAdmin(); + Admin admin = testutil.getAdmin(); admin.disableTable(TableName.valueOf(DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME)); admin.deleteTable(TableName.valueOf(DEFAULT_TIMESTAMP_STORAGE_TABLE_NAME));