From 292eaaa2b8e7267264924047724e921db7dc44f9 Mon Sep 17 00:00:00 2001 From: miyuan-ljr Date: Mon, 11 Nov 2024 19:21:01 +0800 Subject: [PATCH 1/3] fix --- .../java/com/alipay/oceanbase/rpc/ObTableClient.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/alipay/oceanbase/rpc/ObTableClient.java b/src/main/java/com/alipay/oceanbase/rpc/ObTableClient.java index 8c240a1d..9fe3d3fa 100644 --- a/src/main/java/com/alipay/oceanbase/rpc/ObTableClient.java +++ b/src/main/java/com/alipay/oceanbase/rpc/ObTableClient.java @@ -1938,9 +1938,14 @@ private List> getPartitionReplica(TableEntry table List> replicas = new ArrayList<>(); if (!tableEntry.isPartitionTable() || tableEntry.getPartitionInfo().getLevel() == ObPartitionLevel.LEVEL_ZERO) { - long tabletId = getTabletIdByPartId(tableEntry, 0L); - ObPartitionLocationInfo locationInfo = getOrRefreshPartitionInfo(tableEntry, tableName, tabletId); - replicas.add(new ObPair<>(tabletId, getPartitionLocation(locationInfo, route))); + if (ObGlobal.obVsnMajor() >= 4) { + long tabletId = getTabletIdByPartId(tableEntry, 0L); + ObPartitionLocationInfo locationInfo = getOrRefreshPartitionInfo(tableEntry, tableName, tabletId); + replicas.add(new ObPair<>(tabletId, getPartitionLocation(locationInfo, route))); + } else { + replicas.add(new ObPair(0L, getPartitionLocation(tableEntry, 0L, + route))); + } return replicas; } From 66ad49dd5b1673a294003f15b9024434cacf79a4 Mon Sep 17 00:00:00 2001 From: miyuan-ljr Date: Mon, 11 Nov 2024 19:28:33 +0800 Subject: [PATCH 2/3] fix --- src/main/java/com/alipay/oceanbase/rpc/ObTableClient.java | 6 ++++-- .../oceanbase/rpc/table/ObTableClientBatchOpsImpl.java | 5 ++++- .../oceanbase/rpc/table/ObTableClientLSBatchOpsImpl.java | 5 ++++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/alipay/oceanbase/rpc/ObTableClient.java b/src/main/java/com/alipay/oceanbase/rpc/ObTableClient.java index 9fe3d3fa..078a4e25 100644 --- a/src/main/java/com/alipay/oceanbase/rpc/ObTableClient.java +++ b/src/main/java/com/alipay/oceanbase/rpc/ObTableClient.java @@ -792,7 +792,9 @@ private T executeMutation(String tableName, MutationExecuteCallback callb if (tryTimes > 1) { TableEntry entry = getOrRefreshTableEntry(tableName, false, false, false); Long partId = getPartition(entry, callback.getRowKey()); - refreshTableLocationByTabletId(entry, tableName, getTabletIdByPartId(entry, partId)); + if (ObGlobal.obVsnMajor() >= 4) { + refreshTableLocationByTabletId(entry, tableName, getTabletIdByPartId(entry, partId)); + } } // using row key obPair = getTable(tableName, callback.getRowKey(), needRefreshTableEntry, tableEntryRefreshIntervalWait, false, route); @@ -1661,7 +1663,7 @@ private ObPair getTable(String tableName, Object[] rowKey, } long partId = getPartition(tableEntry, row); // partition id in 3.x, origin partId in 4.x, logicId - if (refresh) { + if (refresh && ObGlobal.obVsnMajor() >= 4) { refreshTableLocationByTabletId(tableEntry, tableName, getTabletIdByPartId(tableEntry, partId)); } return getTableInternal(tableName, tableEntry, partId, waitForRefresh, route); diff --git a/src/main/java/com/alipay/oceanbase/rpc/table/ObTableClientBatchOpsImpl.java b/src/main/java/com/alipay/oceanbase/rpc/table/ObTableClientBatchOpsImpl.java index 5567920a..7b44ca20 100644 --- a/src/main/java/com/alipay/oceanbase/rpc/table/ObTableClientBatchOpsImpl.java +++ b/src/main/java/com/alipay/oceanbase/rpc/table/ObTableClientBatchOpsImpl.java @@ -17,6 +17,7 @@ package com.alipay.oceanbase.rpc.table; +import com.alipay.oceanbase.rpc.ObGlobal; import com.alipay.oceanbase.rpc.ObTableClient; import com.alipay.oceanbase.rpc.exception.*; import com.alipay.oceanbase.rpc.location.model.ObServerRoute; @@ -355,7 +356,9 @@ public void partitionExecute(ObTableOperationResult[] results, } TableEntry entry = obTableClient.getOrRefreshTableEntry(tableName, false, false, false); - obTableClient.refreshTableLocationByTabletId(entry, tableName, partId); + if (ObGlobal.obVsnMajor() >= 4) { + obTableClient.refreshTableLocationByTabletId(entry, tableName, partId); + } ObTableParam newParam = obTableClient.getTableWithPartId(tableName, partId, false, obTableClient.isTableEntryRefreshIntervalWait(), needFetchAllRouteInfo, route).getRight(); diff --git a/src/main/java/com/alipay/oceanbase/rpc/table/ObTableClientLSBatchOpsImpl.java b/src/main/java/com/alipay/oceanbase/rpc/table/ObTableClientLSBatchOpsImpl.java index b17bbc37..c9d39b1a 100644 --- a/src/main/java/com/alipay/oceanbase/rpc/table/ObTableClientLSBatchOpsImpl.java +++ b/src/main/java/com/alipay/oceanbase/rpc/table/ObTableClientLSBatchOpsImpl.java @@ -17,6 +17,7 @@ package com.alipay.oceanbase.rpc.table; +import com.alipay.oceanbase.rpc.ObGlobal; import com.alipay.oceanbase.rpc.ObTableClient; import com.alipay.oceanbase.rpc.checkandmutate.CheckAndInsUp; import com.alipay.oceanbase.rpc.exception.*; @@ -476,7 +477,9 @@ public void partitionExecute(ObTableSingleOpResult[] results, } TableEntry entry = obTableClient.getOrRefreshTableEntry(tableName, false, false, false); - obTableClient.refreshTableLocationByTabletId(entry, tableName, obTableClient.getTabletIdByPartId(entry, originPartId)); + if (ObGlobal.obVsnMajor() >= 4) { + obTableClient.refreshTableLocationByTabletId(entry, tableName, obTableClient.getTabletIdByPartId(entry, originPartId)); + } subObTable = obTableClient.getTableWithPartId(tableName, originPartId, needRefreshTableEntry, obTableClient.isTableEntryRefreshIntervalWait(), false, route). getRight().getObTable(); From f26a4f2af616babe426e7e757cb9a17fc701491c Mon Sep 17 00:00:00 2001 From: miyuan-ljr Date: Mon, 11 Nov 2024 19:31:58 +0800 Subject: [PATCH 3/3] refine --- src/main/java/com/alipay/oceanbase/rpc/ObTableClient.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/com/alipay/oceanbase/rpc/ObTableClient.java b/src/main/java/com/alipay/oceanbase/rpc/ObTableClient.java index 078a4e25..91f5f166 100644 --- a/src/main/java/com/alipay/oceanbase/rpc/ObTableClient.java +++ b/src/main/java/com/alipay/oceanbase/rpc/ObTableClient.java @@ -1897,9 +1897,7 @@ private ObPartitionLocationInfo getOrRefreshPartitionInfo(TableEntry tableEntry, ObPartitionLocationInfo obPartitionLocationInfo = tableEntry.getPartitionEntry() .getPartitionInfo(tabletId); if (!obPartitionLocationInfo.initialized.get()) { - if (ObGlobal.obVsnMajor() >= 4) { - tableEntry = refreshTableLocationByTabletId(tableEntry, tableName, tabletId); - } + tableEntry = refreshTableLocationByTabletId(tableEntry, tableName, tabletId); obPartitionLocationInfo = tableEntry.getPartitionEntry().getPartitionInfo(tabletId); obPartitionLocationInfo.initializationLatch.await(); }