@@ -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