Skip to content

Commit 4718948

Browse files
committed
refresh tablet location to refresh leader observer when transport timeout
1 parent f6037ad commit 4718948

File tree

4 files changed

+13
-1
lines changed

4 files changed

+13
-1
lines changed

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -572,6 +572,10 @@ private <T> T execute(String tableName, TableExecuteCallback<T> callback, ObServ
572572
if (ex instanceof ObTableTransportException &&
573573
((ObTableTransportException) ex).getErrorCode() == TransportCodes.BOLT_TIMEOUT) {
574574
syncRefreshMetadata(true);
575+
TableEntry entry = tableRoute.getTableEntry(tableName);
576+
long partId = tableRoute.getPartId(entry, rowKey);
577+
long tabletId = tableRoute.getTabletIdByPartId(entry, partId);
578+
tableRoute.refreshPartitionLocation(tableName, tabletId, entry);
575579
}
576580
String logMessage;
577581
if (ex instanceof ObTableException) {
@@ -786,6 +790,10 @@ private <T> T execute(String tableName, OperationExecuteCallback<T> callback,
786790
if (ex instanceof ObTableTransportException &&
787791
((ObTableTransportException) ex).getErrorCode() == TransportCodes.BOLT_TIMEOUT) {
788792
syncRefreshMetadata(true);
793+
TableEntry entry = tableRoute.getTableEntry(tableName);
794+
long partId = tableRoute.getPartId(entry, callback.getRowKey());
795+
long tabletId = tableRoute.getTabletIdByPartId(entry, partId);
796+
tableRoute.refreshPartitionLocation(tableName, tabletId, entry);
789797
}
790798
String logMessage;
791799
if (ex instanceof ObTableException) {

src/main/java/com/alipay/oceanbase/rpc/protocol/payload/impl/execute/query/AbstractQueryStreamResult.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,8 @@ protected ObPayload commonExecute(ObTableClient client, Logger logger,
291291
if (e instanceof ObTableTransportException
292292
&& ((ObTableTransportException) e).getErrorCode() == TransportCodes.BOLT_TIMEOUT) {
293293
client.syncRefreshMetadata(true);
294+
long tabletId = partIdWithIndex.getRight().getTabletId();
295+
client.refreshTableLocationByTabletId(indexTableName, tabletId);
294296
}
295297
client.calculateContinuousFailure(indexTableName, e.getMessage());
296298
throw e;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,6 +455,7 @@ public void partitionExecute(ObTableOperationResult[] results,
455455
if (ex instanceof ObTableTransportException
456456
&& ((ObTableTransportException) ex).getErrorCode() == TransportCodes.BOLT_TIMEOUT) {
457457
obTableClient.syncRefreshMetadata(true);
458+
obTableClient.refreshTableLocationByTabletId(tableName, partId);
458459
}
459460
obTableClient.calculateContinuousFailure(tableName, ex.getMessage());
460461
throw ex;

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -676,7 +676,7 @@ public void partitionExecute(ObTableSingleOpResult[] results,
676676
}
677677
} else if (ex instanceof ObTableException) {
678678
if (((ObTableException) ex).isNeedRefreshTableEntry()) {
679-
logger.warn("meet need refresh exception, errCode: {}, ls id: {}", ((ObTableException) ex).getErrorCode(), lsId);
679+
logger.warn("meet need refresh exception, errCode: {}, ls id: {}, errMsg: {}", ((ObTableException) ex).getErrorCode(), lsId, ex.getMessage());
680680
if ((((ObTableException) ex).getErrorCode() == ResultCodes.OB_TABLE_NOT_EXIST.errorCode ||
681681
((ObTableException) ex).getErrorCode() == ResultCodes.OB_SCHEMA_ERROR.errorCode)
682682
&& obTableClient.isTableGroupName(tableName)
@@ -731,6 +731,7 @@ public void partitionExecute(ObTableSingleOpResult[] results,
731731
if (ex instanceof ObTableTransportException &&
732732
((ObTableTransportException) ex).getErrorCode() == TransportCodes.BOLT_TIMEOUT) {
733733
obTableClient.syncRefreshMetadata(true);
734+
obTableClient.refreshTabletLocationBatch(realTableName);
734735
}
735736
obTableClient.calculateContinuousFailure(realTableName, ex.getMessage());
736737
throw ex;

0 commit comments

Comments
 (0)