Skip to content

Commit 239cb3a

Browse files
committed
do fetch by error code
1 parent 30fa10e commit 239cb3a

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

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

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,10 +140,18 @@ public ObPayload invokeSync(final ObTableConnection conn, final ObPayload reques
140140
}
141141
}
142142
if (resultCode.getRcode() != 0) {
143-
ExceptionUtil.throwObTableException(conn.getObTable().getIp(), conn.getObTable()
144-
.getPort(), response.getHeader().getTraceId1(), response.getHeader()
145-
.getTraceId0(), resultCode.getRcode(), resultCode.getErrMsg());
146-
return null;
143+
String errMessage = TraceUtil.formatTraceMessage(conn, request,
144+
"routed to the wrong server: " + response.getMessage());
145+
logger.warn(errMessage);
146+
if (needFetchAll(resultCode.getRcode(), resultCode.getPcode())) {
147+
throw new ObTableNeedFetchAllException(errMessage);
148+
} else if (needFetchPartial(resultCode.getRcode())) {
149+
throw new ObTableRoutingWrongException(errMessage);
150+
} else {
151+
ExceptionUtil.throwObTableException(conn.getObTable().getIp(), conn.getObTable()
152+
.getPort(), response.getHeader().getTraceId1(), response.getHeader()
153+
.getTraceId0(), resultCode.getRcode(), resultCode.getErrMsg());
154+
}
147155
}
148156

149157
// decode payload itself
@@ -178,6 +186,7 @@ protected InvokeFuture createInvokeFuture(Connection conn, RemotingCommand reque
178186
InvokeCallback invokeCallback) {
179187
return new ObClientFuture(request.getId());
180188
}
189+
181190

182191
// schema changed
183192
private boolean needFetchAll(int errorCode, int pcode) {

0 commit comments

Comments
 (0)