Skip to content

Commit 74e8ca7

Browse files
committed
fix merge secondary_part conflict
1 parent cc9c1ff commit 74e8ca7

21 files changed

+455
-422
lines changed

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

Lines changed: 72 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ public class OHTable implements Table {
154154
/**
155155
* the buffer of put request
156156
*/
157-
private final ArrayList<Put> writeBuffer = new ArrayList<>();
157+
private final ArrayList<Put> writeBuffer = new ArrayList<Put>();
158158
/**
159159
* when the put request reach the write buffer size the do put will
160160
* flush commits automatically
@@ -1423,7 +1423,7 @@ private boolean checkAndMutation(byte[] row, byte[] family, byte[] qualifier,
14231423
"mutation family is not equal check family");
14241424
}
14251425
byte[] filterString = buildCheckAndMutateFilterString(family, qualifier, compareOp, value);
1426-
ObHTableFilter filter = buildObHTableFilter(filterString, null, 1, qualifier);
1426+
ObHTableFilter filter = buildObHTableFilter(filterString, timeRange, 1, qualifier);
14271427
ObTableQuery obTableQuery = buildObTableQuery(filter, row, true, row, true, false,
14281428
new TimeRange());
14291429
ObTableBatchOperation batch = buildObTableBatchOperation(mutations, null);
@@ -2004,69 +2004,98 @@ public static ObTableBatchOperation buildObTableBatchOperation(List<Mutation> ro
20042004
batch.setSamePropertiesNames(true);
20052005
return batch;
20062006
}
2007+
20072008
private QueryAndMutate buildDeleteQueryAndMutate(KeyValue kv,
20082009
ObTableOperationType operationType,
2009-
boolean isTableGroup, Long TTL) {
2010-
KeyValue.Type kvType = KeyValue.Type.codeToType(kv.getType());
2011-
com.alipay.oceanbase.rpc.mutation.Mutation tableMutation = buildMutation(kv, operationType, isTableGroup, TTL);
2010+
boolean isTableGroup, byte[] family, Long TTL) {
2011+
KeyValue.Type kvType = KeyValue.Type.codeToType(kv.getType().getCode());
2012+
com.alipay.oceanbase.rpc.mutation.Mutation tableMutation = buildMutation(kv, operationType,
2013+
isTableGroup, family, TTL);
20122014
ObNewRange range = new ObNewRange();
20132015
ObTableQuery tableQuery = new ObTableQuery();
2014-
tableQuery.setObKVParams(buildOBKVParams((Scan)null));
2016+
tableQuery.setObKVParams(buildOBKVParams((Scan) null));
20152017
ObHTableFilter filter = null;
20162018
switch (kvType) {
20172019
case Delete:
20182020
if (kv.getTimestamp() == Long.MAX_VALUE) {
2019-
range.setStartKey(ObRowKey.getInstance(kv.getRow(), ObObj.getMin(), ObObj.getMin()));
2020-
range.setEndKey(ObRowKey.getInstance(kv.getRow(), ObObj.getMax(), ObObj.getMax()));
2021-
filter = buildObHTableFilter(null, null, 1, kv.getQualifier());
2022-
} else {
2023-
range.setStartKey(ObRowKey.getInstance(kv.getRow(), ObObj.getMin(),ObObj.getMin()));
2024-
range.setEndKey(ObRowKey.getInstance(kv.getRow(), ObObj.getMax(), ObObj.getMax()));
2025-
filter = buildObHTableFilter(null, new TimeRange(kv.getTimestamp(), kv.getTimestamp() + 1), 1, kv.getQualifier());
2021+
range.setStartKey(ObRowKey.getInstance(CellUtil.cloneRow(kv), ObObj.getMin(),
2022+
ObObj.getMin()));
2023+
range.setEndKey(ObRowKey.getInstance(CellUtil.cloneRow(kv), ObObj.getMax(),
2024+
ObObj.getMax()));
2025+
filter = buildObHTableFilter(null, null, 1, CellUtil.cloneQualifier(kv));
2026+
} else {
2027+
range.setStartKey(ObRowKey.getInstance(CellUtil.cloneRow(kv), ObObj.getMin(),
2028+
ObObj.getMin()));
2029+
range.setEndKey(ObRowKey.getInstance(CellUtil.cloneRow(kv), ObObj.getMax(),
2030+
ObObj.getMax()));
2031+
filter = buildObHTableFilter(null,
2032+
new TimeRange(kv.getTimestamp(), kv.getTimestamp() + 1), 1,
2033+
CellUtil.cloneQualifier(kv));
20262034
}
20272035
break;
20282036
case DeleteColumn:
20292037
if (kv.getTimestamp() == Long.MAX_VALUE) {
2030-
range.setStartKey(ObRowKey.getInstance(kv.getRow(), ObObj.getMin(), ObObj.getMin()));
2031-
range.setEndKey(ObRowKey.getInstance(kv.getRow(), ObObj.getMax(), ObObj.getMax()));
2032-
filter = buildObHTableFilter(null, null, Integer.MAX_VALUE, kv.getQualifier());
2038+
range.setStartKey(ObRowKey.getInstance(CellUtil.cloneRow(kv), ObObj.getMin(),
2039+
ObObj.getMin()));
2040+
range.setEndKey(ObRowKey.getInstance(CellUtil.cloneRow(kv), ObObj.getMax(),
2041+
ObObj.getMax()));
2042+
filter = buildObHTableFilter(null, null, Integer.MAX_VALUE,
2043+
CellUtil.cloneQualifier(kv));
20332044
} else {
2034-
range.setStartKey(ObRowKey.getInstance(kv.getRow(), ObObj.getMin(), ObObj.getMin()));
2035-
range.setEndKey(ObRowKey.getInstance(kv.getRow(), ObObj.getMax(), ObObj.getMax()));
2036-
filter = buildObHTableFilter(null, new TimeRange(0, kv.getTimestamp() + 1), Integer.MAX_VALUE, kv.getQualifier());
2045+
range.setStartKey(ObRowKey.getInstance(CellUtil.cloneRow(kv), ObObj.getMin(),
2046+
ObObj.getMin()));
2047+
range.setEndKey(ObRowKey.getInstance(CellUtil.cloneRow(kv), ObObj.getMax(),
2048+
ObObj.getMax()));
2049+
filter = buildObHTableFilter(null, new TimeRange(0, kv.getTimestamp() + 1),
2050+
Integer.MAX_VALUE, CellUtil.cloneQualifier(kv));
20372051
}
20382052
break;
20392053
case DeleteFamily:
20402054
if (kv.getTimestamp() == Long.MAX_VALUE) {
2041-
range.setStartKey(ObRowKey.getInstance(kv.getRow(), ObObj.getMin(), ObObj.getMin()));
2042-
range.setEndKey(ObRowKey.getInstance(kv.getRow(), ObObj.getMax(), ObObj.getMax()));
2055+
range.setStartKey(ObRowKey.getInstance(CellUtil.cloneRow(kv), ObObj.getMin(),
2056+
ObObj.getMin()));
2057+
range.setEndKey(ObRowKey.getInstance(CellUtil.cloneRow(kv), ObObj.getMax(),
2058+
ObObj.getMax()));
20432059
if (!isTableGroup) {
20442060
filter = buildObHTableFilter(null, null, Integer.MAX_VALUE);
20452061
} else {
2046-
filter = buildObHTableFilter(null, null, Integer.MAX_VALUE, kv.getQualifier());
2062+
filter = buildObHTableFilter(null, null, Integer.MAX_VALUE,
2063+
CellUtil.cloneQualifier(kv));
20472064
}
20482065
} else {
2049-
range.setStartKey(ObRowKey.getInstance(kv.getRow(), ObObj.getMin(), ObObj.getMin()));
2050-
range.setEndKey(ObRowKey.getInstance(kv.getRow(), ObObj.getMax(), ObObj.getMax()));
2066+
range.setStartKey(ObRowKey.getInstance(CellUtil.cloneRow(kv), ObObj.getMin(),
2067+
ObObj.getMin()));
2068+
range.setEndKey(ObRowKey.getInstance(CellUtil.cloneRow(kv), ObObj.getMax(),
2069+
ObObj.getMax()));
20512070
if (!isTableGroup) {
2052-
filter = buildObHTableFilter(null, new TimeRange(0, kv.getTimestamp() + 1), Integer.MAX_VALUE);
2071+
filter = buildObHTableFilter(null, new TimeRange(0, kv.getTimestamp() + 1),
2072+
Integer.MAX_VALUE);
20532073
} else {
2054-
filter = buildObHTableFilter(null, new TimeRange(0, kv.getTimestamp() + 1), Integer.MAX_VALUE, kv.getQualifier());
2074+
filter = buildObHTableFilter(null, new TimeRange(0, kv.getTimestamp() + 1),
2075+
Integer.MAX_VALUE, CellUtil.cloneQualifier(kv));
20552076
}
20562077
}
20572078
break;
20582079
case DeleteFamilyVersion:
20592080
if (kv.getTimestamp() == Long.MAX_VALUE) {
2060-
range.setStartKey(ObRowKey.getInstance(kv.getRow(), ObObj.getMin(), ObObj.getMin()));
2061-
range.setEndKey(ObRowKey.getInstance(kv.getRow(), ObObj.getMax(), ObObj.getMax()));
2081+
range.setStartKey(ObRowKey.getInstance(CellUtil.cloneRow(kv), ObObj.getMin(),
2082+
ObObj.getMin()));
2083+
range.setEndKey(ObRowKey.getInstance(CellUtil.cloneRow(kv), ObObj.getMax(),
2084+
ObObj.getMax()));
20622085
filter = buildObHTableFilter(null, null, Integer.MAX_VALUE);
20632086
} else {
2064-
range.setStartKey(ObRowKey.getInstance(kv.getRow(), ObObj.getMin(), ObObj.getMin()));
2065-
range.setEndKey(ObRowKey.getInstance(kv.getRow(), ObObj.getMax(), ObObj.getMax()));
2087+
range.setStartKey(ObRowKey.getInstance(CellUtil.cloneRow(kv), ObObj.getMin(),
2088+
ObObj.getMin()));
2089+
range.setEndKey(ObRowKey.getInstance(CellUtil.cloneRow(kv), ObObj.getMax(),
2090+
ObObj.getMax()));
20662091
if (!isTableGroup) {
2067-
filter = buildObHTableFilter(null, new TimeRange(kv.getTimestamp(), kv.getTimestamp() + 1), Integer.MAX_VALUE);
2092+
filter = buildObHTableFilter(null,
2093+
new TimeRange(kv.getTimestamp(), kv.getTimestamp() + 1),
2094+
Integer.MAX_VALUE);
20682095
} else {
2069-
filter = buildObHTableFilter(null, new TimeRange(kv.getTimestamp(), kv.getTimestamp() + 1), Integer.MAX_VALUE, kv.getQualifier());
2096+
filter = buildObHTableFilter(null,
2097+
new TimeRange(kv.getTimestamp(), kv.getTimestamp() + 1),
2098+
Integer.MAX_VALUE, CellUtil.cloneQualifier(kv));
20702099
}
20712100
}
20722101
break;
@@ -2078,7 +2107,6 @@ private QueryAndMutate buildDeleteQueryAndMutate(KeyValue kv,
20782107
return new QueryAndMutate(tableQuery, tableMutation);
20792108
}
20802109

2081-
20822110
private com.alipay.oceanbase.rpc.mutation.Mutation buildMutation(Cell kv,
20832111
ObTableOperationType operationType,
20842112
boolean isTableGroup,
@@ -2212,14 +2240,14 @@ private BatchOperation buildBatchOperation(String tableName, List<? extends Row>
22122240
singleOpResultNum++;
22132241
if (disExec) {
22142242
KeyValue kv = new KeyValue(delete.getRow(), delete.getTimeStamp(),
2215-
KeyValue.Type.Maximum);
2216-
com.alipay.oceanbase.rpc.mutation.Mutation tableMutation = buildMutation(kv, DEL, isTableGroup, Long.MAX_VALUE);
2243+
KeyValue.Type.DeleteFamily);
2244+
com.alipay.oceanbase.rpc.mutation.Mutation tableMutation = buildMutation(kv, DEL, isTableGroup, null, Long.MAX_VALUE);
22172245
ObNewRange range = new ObNewRange();
22182246
ObTableQuery tableQuery = new ObTableQuery();
22192247
ObHTableFilter filter;
22202248
tableQuery.setObKVParams(buildOBKVParams((Scan) null));
2221-
range.setStartKey(ObRowKey.getInstance(kv.getRow(), ObObj.getMin(), ObObj.getMin()));
2222-
range.setEndKey(ObRowKey.getInstance(kv.getRow(), ObObj.getMax(), ObObj.getMax()));
2249+
range.setStartKey(ObRowKey.getInstance(CellUtil.cloneRow(kv), ObObj.getMin(), ObObj.getMin()));
2250+
range.setEndKey(ObRowKey.getInstance(CellUtil.cloneRow(kv), ObObj.getMax(), ObObj.getMax()));
22232251
if (kv.getTimestamp() == Long.MAX_VALUE) {
22242252
filter = buildObHTableFilter(null, null, Integer.MAX_VALUE);
22252253
} else {
@@ -2231,31 +2259,21 @@ private BatchOperation buildBatchOperation(String tableName, List<? extends Row>
22312259
tableMutation.setTable(tableName);
22322260
batch.addOperation(new QueryAndMutate(tableQuery, tableMutation));
22332261
} else {
2234-
KeyValue kv = new KeyValue(delete.getRow(), delete.getTimeStamp(),
2235-
KeyValue.Type.Maximum);
2236-
batch.addOperation(buildMutation(kv, DEL, isTableGroup, Long.MAX_VALUE));
2262+
KeyValue kv = new KeyValue(delete.getRow(), delete.getTimeStamp());
2263+
batch.addOperation(com.alipay.oceanbase.rpc.mutation.Mutation.getInstance(DEL, ROW_KEY_COLUMNS,
2264+
new Object[] { CellUtil.cloneRow(kv), null, -kv.getTimestamp() },
2265+
null, null));
22372266
}
22382267
} else {
22392268
for (Map.Entry<byte[], List<Cell>> entry : delete.getFamilyCellMap().entrySet()) {
22402269
byte[] family = entry.getKey();
22412270
List<Cell> keyValueList = entry.getValue();
22422271
for (Cell kv : keyValueList) {
22432272
singleOpResultNum++;
2244-
if (isTableGroup) {
2245-
KeyValue new_kv = modifyQualifier(kv,
2246-
(Bytes.toString(family) + "." + Bytes.toString(kv
2247-
.getQualifier())).getBytes());
2248-
if (disExec) {
2249-
batch.addOperation(buildDeleteQueryAndMutate(new_kv, DEL, true, Long.MAX_VALUE));
2250-
} else {
2251-
batch.addOperation(buildMutation(new_kv, DEL, true, Long.MAX_VALUE));
2252-
}
2273+
if (disExec) {
2274+
batch.addOperation(buildDeleteQueryAndMutate((KeyValue) kv, DEL, false, family, Long.MAX_VALUE));
22532275
} else {
2254-
if (disExec) {
2255-
batch.addOperation(buildDeleteQueryAndMutate(kv, DEL, false, Long.MAX_VALUE));
2256-
} else {
2257-
batch.addOperation(buildMutation(kv, DEL, false, Long.MAX_VALUE));
2258-
}
2276+
batch.addOperation(buildMutation(kv, DEL, isTableGroup, family, Long.MAX_VALUE));
22592277
}
22602278
}
22612279
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public static ObTableClient getOrCreateObTableClient(OHConnectionConfiguration c
5656
obTableClientKey.setDatabase(connectionConfig.getDatabase());
5757
} else {
5858
checkArgument(isNotBlank(connectionConfig.getParamUrl()), HBASE_OCEANBASE_PARAM_URL
59-
+ " is blank");
59+
+ " is blank");
6060
obTableClientKey = new ObTableClientKey();
6161
String paramUrl = connectionConfig.getParamUrl();
6262
if (!paramUrl.contains("database")) {
@@ -71,7 +71,7 @@ public static ObTableClient getOrCreateObTableClient(OHConnectionConfiguration c
7171
}
7272
}
7373
checkArgument(isNotBlank(connectionConfig.getFullUsername()),
74-
HBASE_OCEANBASE_FULL_USER_NAME + " is blank");
74+
HBASE_OCEANBASE_FULL_USER_NAME + " is blank");
7575
obTableClientKey.setFullUserName(connectionConfig.getFullUsername());
7676

7777
if (connectionConfig.getPassword() == null) {
@@ -83,7 +83,7 @@ public static ObTableClient getOrCreateObTableClient(OHConnectionConfiguration c
8383
for (Map.Entry<Object, Object> property : connectionConfig.getProperties().entrySet()) {
8484
obTableClientKey.getProperties().put(property.getKey(), property.getValue());
8585
}
86-
86+
8787
return getOrCreateObTableClient(obTableClientKey, connectionConfig.getRpcConnectTimeout());
8888
}
8989

0 commit comments

Comments
 (0)