Skip to content

Commit 142249c

Browse files
authored
[fix] test case stuck in await (#227)
* fix * fix * refine
1 parent 2bac7bb commit 142249c

File tree

3 files changed

+21
-10
lines changed

3 files changed

+21
-10
lines changed

src/main/java/com/alipay/oceanbase/rpc/ObTableClient.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -792,7 +792,9 @@ private <T> T executeMutation(String tableName, MutationExecuteCallback<T> callb
792792
if (tryTimes > 1) {
793793
TableEntry entry = getOrRefreshTableEntry(tableName, false, false, false);
794794
Long partId = getPartition(entry, callback.getRowKey());
795-
refreshTableLocationByTabletId(entry, tableName, getTabletIdByPartId(entry, partId));
795+
if (ObGlobal.obVsnMajor() >= 4) {
796+
refreshTableLocationByTabletId(entry, tableName, getTabletIdByPartId(entry, partId));
797+
}
796798
}
797799
// using row key
798800
obPair = getTable(tableName, callback.getRowKey(), needRefreshTableEntry, tableEntryRefreshIntervalWait, false, route);
@@ -1661,7 +1663,7 @@ private ObPair<Long, ObTableParam> getTable(String tableName, Object[] rowKey,
16611663
}
16621664

16631665
long partId = getPartition(tableEntry, row); // partition id in 3.x, origin partId in 4.x, logicId
1664-
if (refresh) {
1666+
if (refresh && ObGlobal.obVsnMajor() >= 4) {
16651667
refreshTableLocationByTabletId(tableEntry, tableName, getTabletIdByPartId(tableEntry, partId));
16661668
}
16671669
return getTableInternal(tableName, tableEntry, partId, waitForRefresh, route);
@@ -1895,9 +1897,7 @@ private ObPartitionLocationInfo getOrRefreshPartitionInfo(TableEntry tableEntry,
18951897
ObPartitionLocationInfo obPartitionLocationInfo = tableEntry.getPartitionEntry()
18961898
.getPartitionInfo(tabletId);
18971899
if (!obPartitionLocationInfo.initialized.get()) {
1898-
if (ObGlobal.obVsnMajor() >= 4) {
1899-
tableEntry = refreshTableLocationByTabletId(tableEntry, tableName, tabletId);
1900-
}
1900+
tableEntry = refreshTableLocationByTabletId(tableEntry, tableName, tabletId);
19011901
obPartitionLocationInfo = tableEntry.getPartitionEntry().getPartitionInfo(tabletId);
19021902
obPartitionLocationInfo.initializationLatch.await();
19031903
}
@@ -1938,9 +1938,14 @@ private List<ObPair<Long, ReplicaLocation>> getPartitionReplica(TableEntry table
19381938
List<ObPair<Long, ReplicaLocation>> replicas = new ArrayList<>();
19391939

19401940
if (!tableEntry.isPartitionTable() || tableEntry.getPartitionInfo().getLevel() == ObPartitionLevel.LEVEL_ZERO) {
1941-
long tabletId = getTabletIdByPartId(tableEntry, 0L);
1942-
ObPartitionLocationInfo locationInfo = getOrRefreshPartitionInfo(tableEntry, tableName, tabletId);
1943-
replicas.add(new ObPair<>(tabletId, getPartitionLocation(locationInfo, route)));
1941+
if (ObGlobal.obVsnMajor() >= 4) {
1942+
long tabletId = getTabletIdByPartId(tableEntry, 0L);
1943+
ObPartitionLocationInfo locationInfo = getOrRefreshPartitionInfo(tableEntry, tableName, tabletId);
1944+
replicas.add(new ObPair<>(tabletId, getPartitionLocation(locationInfo, route)));
1945+
} else {
1946+
replicas.add(new ObPair<Long, ReplicaLocation>(0L, getPartitionLocation(tableEntry, 0L,
1947+
route)));
1948+
}
19441949
return replicas;
19451950
}
19461951

src/main/java/com/alipay/oceanbase/rpc/table/ObTableClientBatchOpsImpl.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
package com.alipay.oceanbase.rpc.table;
1919

20+
import com.alipay.oceanbase.rpc.ObGlobal;
2021
import com.alipay.oceanbase.rpc.ObTableClient;
2122
import com.alipay.oceanbase.rpc.exception.*;
2223
import com.alipay.oceanbase.rpc.location.model.ObServerRoute;
@@ -355,7 +356,9 @@ public void partitionExecute(ObTableOperationResult[] results,
355356
}
356357
TableEntry entry = obTableClient.getOrRefreshTableEntry(tableName, false,
357358
false, false);
358-
obTableClient.refreshTableLocationByTabletId(entry, tableName, partId);
359+
if (ObGlobal.obVsnMajor() >= 4) {
360+
obTableClient.refreshTableLocationByTabletId(entry, tableName, partId);
361+
}
359362
ObTableParam newParam = obTableClient.getTableWithPartId(tableName, partId,
360363
false, obTableClient.isTableEntryRefreshIntervalWait(),
361364
needFetchAllRouteInfo, route).getRight();

src/main/java/com/alipay/oceanbase/rpc/table/ObTableClientLSBatchOpsImpl.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
package com.alipay.oceanbase.rpc.table;
1919

20+
import com.alipay.oceanbase.rpc.ObGlobal;
2021
import com.alipay.oceanbase.rpc.ObTableClient;
2122
import com.alipay.oceanbase.rpc.checkandmutate.CheckAndInsUp;
2223
import com.alipay.oceanbase.rpc.exception.*;
@@ -476,7 +477,9 @@ public void partitionExecute(ObTableSingleOpResult[] results,
476477
}
477478
TableEntry entry = obTableClient.getOrRefreshTableEntry(tableName, false,
478479
false, false);
479-
obTableClient.refreshTableLocationByTabletId(entry, tableName, obTableClient.getTabletIdByPartId(entry, originPartId));
480+
if (ObGlobal.obVsnMajor() >= 4) {
481+
obTableClient.refreshTableLocationByTabletId(entry, tableName, obTableClient.getTabletIdByPartId(entry, originPartId));
482+
}
480483
subObTable = obTableClient.getTableWithPartId(tableName, originPartId, needRefreshTableEntry,
481484
obTableClient.isTableEntryRefreshIntervalWait(), false, route).
482485
getRight().getObTable();

0 commit comments

Comments
 (0)