Skip to content

Commit 73ef9aa

Browse files
committed
Fix frequent refresh lock failures due to short refresh interval
1 parent 22eeb36 commit 73ef9aa

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1350,6 +1350,11 @@ public TableEntry refreshTableLocationByTabletId(TableEntry tableEntry, String t
13501350
}
13511351

13521352
try {
1353+
lastRefreshTime = tableEntry.getPartitionEntry().getPartitionInfo(tabletId).getLastUpdateTime();
1354+
currentTime = System.currentTimeMillis();
1355+
if (currentTime - lastRefreshTime < tableEntryRefreshLockTimeout) {
1356+
return tableEntry;
1357+
}
13531358
tableEntry = loadTableEntryLocationWithPriority(serverRoster, tableEntryKey, tableEntry, tabletId,
13541359
tableEntryAcquireConnectTimeout, tableEntryAcquireSocketTimeout,
13551360
serverAddressPriorityTimeout, serverAddressCachingTimeout, sysUA);

src/main/java/com/alipay/oceanbase/rpc/bolt/transport/ObTableRemoting.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
import io.netty.buffer.ByteBuf;
3232
import org.slf4j.Logger;
3333

34+
import javax.xml.transform.Result;
35+
3436
import static com.alipay.oceanbase.rpc.protocol.packet.ObCompressType.INVALID_COMPRESSOR;
3537
import static com.alipay.oceanbase.rpc.protocol.packet.ObCompressType.NONE_COMPRESSOR;
3638

@@ -139,7 +141,8 @@ public ObPayload invokeSync(final ObTableConnection conn, final ObPayload reques
139141
throw new ObTableNeedFetchAllException(errMessage, resultCode.getRcode());
140142
}
141143
}
142-
if (resultCode.getRcode() != 0 && response.getHeader().getPcode() != Pcodes.OB_TABLE_API_MOVE) {
144+
if (resultCode.getRcode() != 0
145+
&& response.getHeader().getPcode() != Pcodes.OB_TABLE_API_MOVE) {
143146
String errMessage = TraceUtil.formatTraceMessage(conn, request,
144147
"routed to the wrong server: " + response.getMessage());
145148
logger.warn(errMessage);
@@ -193,6 +196,7 @@ private boolean needFetchAll(int errorCode, int pcode) {
193196
|| errorCode == ResultCodes.OB_TABLE_NOT_EXIST.errorCode
194197
|| errorCode == ResultCodes.OB_TABLET_NOT_EXIST.errorCode
195198
|| errorCode == ResultCodes.OB_LS_NOT_EXIST.errorCode
199+
|| errorCode == ResultCodes.OB_MAPPING_BETWEEN_TABLET_AND_LS_NOT_EXIST.errorCode
196200
|| (pcode == Pcodes.OB_TABLE_API_LS_EXECUTE && errorCode == ResultCodes.OB_NOT_MASTER.errorCode);
197201
}
198202

0 commit comments

Comments
 (0)