Skip to content

Commit c93032c

Browse files
committed
Cherry-pick 161a7ce (contains conflicts)
This commit contains unresolved conflicts that need manual resolution.
1 parent 72a0772 commit c93032c

File tree

3 files changed

+62
-18
lines changed

3 files changed

+62
-18
lines changed

src/main/java/com/alipay/oceanbase/hbase/OHTable.java

Lines changed: 44 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
import org.apache.hadoop.hbase.util.VersionInfo;
6666
import org.slf4j.Logger;
6767

68+
import javax.swing.plaf.synth.Region;
6869
import java.io.ByteArrayOutputStream;
6970
import java.io.IOException;
7071
import java.util.*;
@@ -193,7 +194,23 @@ public class OHTable implements Table {
193194
*/
194195
private final Configuration configuration;
195196

197+
<<<<<<< HEAD
196198
private int scannerTimeout;
199+
=======
200+
private int scannerTimeout;
201+
202+
/**
203+
* the bufferedMutator to execute Puts
204+
*/
205+
private OHBufferedMutatorImpl mutator;
206+
207+
private RegionLocator regionLocator;
208+
209+
/**
210+
* flag for whether closed
211+
*/
212+
private boolean isClosed = false;
213+
>>>>>>> 161a7ce (fix delete family version result error)
197214

198215
/**
199216
* Creates an object to access a HBase table.
@@ -2082,7 +2099,7 @@ private QueryAndMutate buildDeleteQueryAndMutate(KeyValue kv,
20822099
if (!isTableGroup) {
20832100
filter = buildObHTableFilter(null, null, Integer.MAX_VALUE);
20842101
} else {
2085-
filter = buildObHTableFilter(null, null, Integer.MAX_VALUE);
2102+
filter = buildObHTableFilter(null, null, Integer.MAX_VALUE, kv.getQualifier());
20862103
}
20872104
} else {
20882105
range.setStartKey(ObRowKey.getInstance(CellUtil.cloneRow(kv), ObObj.getMin(),
@@ -2104,20 +2121,31 @@ private QueryAndMutate buildDeleteQueryAndMutate(KeyValue kv,
21042121
ObObj.getMin()));
21052122
range.setEndKey(ObRowKey.getInstance(CellUtil.cloneRow(kv), ObObj.getMax(),
21062123
ObObj.getMax()));
2107-
filter = buildObHTableFilter(null, null, Integer.MAX_VALUE);
2124+
// [MAX_VALUE, MAX_VALUE), delete nothing
2125+
filter = buildObHTableFilter(null, new TimeRange(Long.MAX_VALUE), Integer.MAX_VALUE);
21082126
} else {
2127+
<<<<<<< HEAD
21092128
range.setStartKey(ObRowKey.getInstance(CellUtil.cloneRow(kv), ObObj.getMin(),
2129+
=======
2130+
TimeRange timeRange = new TimeRange(kv.getTimestamp(), kv.getTimestamp() + 1);
2131+
range.setStartKey(ObRowKey.getInstance(kv.getRow(), ObObj.getMin(),
2132+
>>>>>>> 161a7ce (fix delete family version result error)
21102133
ObObj.getMin()));
21112134
range.setEndKey(ObRowKey.getInstance(CellUtil.cloneRow(kv), ObObj.getMax(),
21122135
ObObj.getMax()));
21132136
if (!isTableGroup) {
21142137
filter = buildObHTableFilter(null,
2115-
new TimeRange(0, kv.getTimestamp() + 1),
2138+
timeRange,
21162139
Integer.MAX_VALUE);
21172140
} else {
21182141
filter = buildObHTableFilter(null,
2142+
<<<<<<< HEAD
21192143
new TimeRange(0, kv.getTimestamp() + 1),
21202144
Integer.MAX_VALUE, CellUtil.cloneQualifier(kv));
2145+
=======
2146+
timeRange,
2147+
Integer.MAX_VALUE, kv.getQualifier());
2148+
>>>>>>> 161a7ce (fix delete family version result error)
21212149
}
21222150
}
21232151
break;
@@ -2432,27 +2460,27 @@ public void refreshTableEntry(String familyString, boolean hasTestLoad) throws E
24322460
}
24332461

24342462
public byte[][] getStartKeys() throws IOException {
2435-
byte[][] startKeys = new byte[0][];
2436-
try {
2437-
startKeys = obTableClient.getHBaseTableStartKeys(tableNameString);
2438-
} catch (Exception e) {
2439-
throw new IOException("Fail to get start keys of HBase Table: " + tableNameString, e);
2463+
if (regionLocator == null) {
2464+
OHRegionLocatorExecutor executor = new OHRegionLocatorExecutor(tableNameString, obTableClient);
2465+
regionLocator = executor.getRegionLocator(tableNameString);
24402466
}
2441-
return startKeys;
2467+
return regionLocator.getStartKeys();
24422468
}
24432469

24442470
public byte[][] getEndKeys() throws IOException {
2445-
byte[][] endKeys = new byte[0][];
2446-
try {
2447-
endKeys = obTableClient.getHBaseTableEndKeys(tableNameString);
2448-
} catch (Exception e) {
2449-
throw new IOException("Fail to get start keys of HBase Table: " + tableNameString, e);
2471+
if (regionLocator == null) {
2472+
OHRegionLocatorExecutor executor = new OHRegionLocatorExecutor(tableNameString, obTableClient);
2473+
regionLocator = executor.getRegionLocator(tableNameString);
24502474
}
2451-
return endKeys;
2475+
return regionLocator.getEndKeys();
24522476
}
24532477

24542478
public Pair<byte[][], byte[][]> getStartEndKeys() throws IOException {
2455-
return new Pair<>(getStartKeys(), getEndKeys());
2479+
if (regionLocator == null) {
2480+
OHRegionLocatorExecutor executor = new OHRegionLocatorExecutor(tableNameString, obTableClient);
2481+
regionLocator = executor.getRegionLocator(tableNameString);
2482+
}
2483+
return regionLocator.getStartEndKeys();
24562484
}
24572485

24582486
private CompareFilter.CompareOp getCompareOp(CompareOperator cmpOp) {

src/main/java/com/alipay/oceanbase/hbase/util/OHRegionLocatorExecutor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public class OHRegionLocatorExecutor extends AbstractObTableMetaExecutor<OHRegio
3939
private final String tableName;
4040
private final ObTableClient client;
4141

42-
OHRegionLocatorExecutor(String tableName, ObTableClient client) {
42+
public OHRegionLocatorExecutor(String tableName, ObTableClient client) {
4343
this.tableName = tableName;
4444
this.client = client;
4545
}

src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartDeleteTest.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,23 @@ public static void testMultiCFDeleteFamilyVersionImpl(Map.Entry<String, List<Str
482482
get.addColumn(toBytes(family), toBytes(column + family));
483483
}
484484
Result result = hTable.get(get);
485-
Assert(entry.getValue(), ()->Assert.assertEquals(6, result.size()));
485+
// (ts1, ts3, ts4) * 3
486+
Result finalResult = result;
487+
Assert(entry.getValue(), ()->Assert.assertEquals(3 * entry.getValue().size(), finalResult.size()));
488+
489+
put = new Put(toBytes(key));
490+
delete = new Delete(toBytes(key));
491+
for (String tableName : entry.getValue()) {
492+
String family = getColumnFamilyName(tableName);
493+
Long ts = Long.MAX_VALUE;
494+
put.addColumn(toBytes(family), toBytes(column + family), ts, toBytes(value + ts));
495+
delete.addFamilyVersion(family.getBytes(), Long.MAX_VALUE); // do nothing
496+
}
497+
hTable.put(put);
498+
hTable.delete(delete);
499+
result = hTable.get(get);
500+
Result finalResult1 = result;
501+
Assert(entry.getValue(), ()->Assert.assertEquals(4 * entry.getValue().size(), finalResult1.size()));
486502
hTable.close();
487503
}
488504

0 commit comments

Comments
 (0)