diff --git a/src/main/java/com/alipay/oceanbase/rpc/ObTableClient.java b/src/main/java/com/alipay/oceanbase/rpc/ObTableClient.java index eea44e5f..805eaf39 100644 --- a/src/main/java/com/alipay/oceanbase/rpc/ObTableClient.java +++ b/src/main/java/com/alipay/oceanbase/rpc/ObTableClient.java @@ -1141,17 +1141,20 @@ public ObIndexInfo getOrRefreshIndexInfo(final String indexTableName, boolean fo logger.info("index info is not exist, create new index info, indexTableName: {}", indexTableName); int serverSize = serverRoster.getMembers().size(); - int refreshTryTimes = tableEntryRefreshTryTimes > serverSize ? serverSize - : tableEntryRefreshTryTimes; + int refreshTryTimes = Math.min(tableEntryRefreshTryTimes, serverSize); for (int i = 0; i < refreshTryTimes; i++) { try { ObServerAddr serverAddr = serverRoster.getServer(serverAddressPriorityTimeout, serverAddressCachingTimeout); + if (serverAddr.isExpired(serverAddressCachingTimeout)) { + syncRefreshMetadata(false); + } indexInfo = getIndexInfoFromRemote(serverAddr, sysUA, tableEntryAcquireConnectTimeout, tableEntryAcquireSocketTimeout, indexTableName); if (indexInfo != null) { indexinfos.put(indexTableName, indexInfo); + break; } else { RUNTIME.error("get index info from remote is null, indexTableName: {}", indexTableName);