Skip to content

Commit 17107a8

Browse files
miyuan-ljrmaochongxin
authored andcommitted
[fix] test case stuck in await (#227)
* fix * fix * refine
1 parent 1a47442 commit 17107a8

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
@@ -814,7 +814,9 @@ private <T> T execute(String tableName, OperationExecuteCallback<T> callback,
814814
if (tryTimes > 1) {
815815
TableEntry entry = getOrRefreshTableEntry(tableName, false, false, false);
816816
Long partId = getPartition(entry, callback.getRowKey());
817-
refreshTableLocationByTabletId(entry, tableName, getTabletIdByPartId(entry, partId));
817+
if (ObGlobal.obVsnMajor() >= 4) {
818+
refreshTableLocationByTabletId(entry, tableName, getTabletIdByPartId(entry, partId));
819+
}
818820
}
819821
// using row key
820822
obPair = getTable(tableName, callback.getRowKey(), needRefreshTableEntry, tableEntryRefreshIntervalWait, false, route);
@@ -1692,7 +1694,7 @@ private ObPair<Long, ObTableParam> getTable(String tableName, Object[] rowKey,
16921694
}
16931695

16941696
long partId = getPartition(tableEntry, row); // partition id in 3.x, origin partId in 4.x, logicId
1695-
if (refresh) {
1697+
if (refresh && ObGlobal.obVsnMajor() >= 4) {
16961698
refreshTableLocationByTabletId(tableEntry, tableName, getTabletIdByPartId(tableEntry, partId));
16971699
}
16981700
return getTableInternal(tableName, tableEntry, partId, waitForRefresh, route);
@@ -2003,9 +2005,7 @@ private ObPartitionLocationInfo getOrRefreshPartitionInfo(TableEntry tableEntry,
20032005
ObPartitionLocationInfo obPartitionLocationInfo = tableEntry.getPartitionEntry()
20042006
.getPartitionInfo(tabletId);
20052007
if (!obPartitionLocationInfo.initialized.get()) {
2006-
if (ObGlobal.obVsnMajor() >= 4) {
2007-
tableEntry = refreshTableLocationByTabletId(tableEntry, tableName, tabletId);
2008-
}
2008+
tableEntry = refreshTableLocationByTabletId(tableEntry, tableName, tabletId);
20092009
obPartitionLocationInfo = tableEntry.getPartitionEntry().getPartitionInfo(tabletId);
20102010
obPartitionLocationInfo.initializationLatch.await();
20112011
}
@@ -2063,9 +2063,14 @@ private List<ObPair<Long, ReplicaLocation>> getPartitionReplica(TableEntry table
20632063
List<ObPair<Long, ReplicaLocation>> replicas = new ArrayList<>();
20642064

20652065
if (!tableEntry.isPartitionTable() || tableEntry.getPartitionInfo().getLevel() == ObPartitionLevel.LEVEL_ZERO) {
2066-
long tabletId = getTabletIdByPartId(tableEntry, 0L);
2067-
ObPartitionLocationInfo locationInfo = getOrRefreshPartitionInfo(tableEntry, tableName, tabletId);
2068-
replicas.add(new ObPair<>(tabletId, getPartitionLocation(locationInfo, route)));
2066+
if (ObGlobal.obVsnMajor() >= 4) {
2067+
long tabletId = getTabletIdByPartId(tableEntry, 0L);
2068+
ObPartitionLocationInfo locationInfo = getOrRefreshPartitionInfo(tableEntry, tableName, tabletId);
2069+
replicas.add(new ObPair<>(tabletId, getPartitionLocation(locationInfo, route)));
2070+
} else {
2071+
replicas.add(new ObPair<Long, ReplicaLocation>(0L, getPartitionLocation(tableEntry, 0L,
2072+
route)));
2073+
}
20692074
return replicas;
20702075
}
20712076

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;
@@ -368,7 +369,9 @@ public void partitionExecute(ObTableOperationResult[] results,
368369
}
369370
TableEntry entry = obTableClient.getOrRefreshTableEntry(tableName, false,
370371
false, false);
371-
obTableClient.refreshTableLocationByTabletId(entry, tableName, partId);
372+
if (ObGlobal.obVsnMajor() >= 4) {
373+
obTableClient.refreshTableLocationByTabletId(entry, tableName, partId);
374+
}
372375
ObTableParam newParam = obTableClient.getTableWithPartId(tableName, partId,
373376
false, obTableClient.isTableEntryRefreshIntervalWait(), needFetchAllRouteInfo, route)
374377
.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.*;
@@ -516,7 +517,9 @@ public void partitionExecute(ObTableSingleOpResult[] results,
516517
}
517518
TableEntry entry = obTableClient.getOrRefreshTableEntry(tableName, false,
518519
false, false);
519-
obTableClient.refreshTableLocationByTabletId(entry, tableName, obTableClient.getTabletIdByPartId(entry, originPartId));
520+
if (ObGlobal.obVsnMajor() >= 4) {
521+
obTableClient.refreshTableLocationByTabletId(entry, tableName, obTableClient.getTabletIdByPartId(entry, originPartId));
522+
}
520523
subObTable = obTableClient.getTableWithPartId(tableName, originPartId, needRefreshTableEntry,
521524
obTableClient.isTableEntryRefreshIntervalWait(), false, route).
522525
getRight().getObTable();

0 commit comments

Comments
 (0)