4343import java .sql .*;
4444import java .text .MessageFormat ;
4545import java .util .*;
46+ import java .util .regex .Matcher ;
47+ import java .util .regex .Pattern ;
4648
4749import static com .alipay .oceanbase .rpc .location .model .partition .ObPartitionKey .MAX_PARTITION_ELEMENT ;
4850import static com .alipay .oceanbase .rpc .location .model .partition .ObPartitionKey .MIN_PARTITION_ELEMENT ;
@@ -1234,6 +1236,18 @@ public static Long getTableIdFromRemote(ObServerAddr obServerAddr, ObUserAuth sy
12341236 return tableId ;
12351237 }
12361238
1239+ private static String getActualIndexName (String indexTableName ) {
1240+ String actualIndexName = null ;
1241+ if (indexTableName != null && indexTableName .startsWith ("__idx_" )) {
1242+ Pattern pattern = Pattern .compile ("^__idx_\\ d+_(.+)$" );
1243+ Matcher matcher = pattern .matcher (indexTableName );
1244+ if (matcher .matches ()) {
1245+ actualIndexName = matcher .group (1 );
1246+ }
1247+ }
1248+ return actualIndexName == null ? indexTableName == null ? "" : indexTableName : actualIndexName ;
1249+ }
1250+
12371251 public static ObIndexInfo getIndexInfoFromRemote (ObServerAddr obServerAddr , ObUserAuth sysUA ,
12381252 long connectTimeout , long socketTimeout ,
12391253 String indexTableName )
@@ -1254,22 +1268,22 @@ public static ObIndexInfo getIndexInfoFromRemote(ObServerAddr obServerAddr, ObUs
12541268 indexInfo .setIndexTableId (rs .getLong ("table_id" ));
12551269 indexInfo .setIndexType (ObIndexType .valueOf (rs .getInt ("index_type" )));
12561270 } else {
1257- throw new ObTableEntryRefreshException ("index is not exist " );
1271+ throw new ObTableEntryRefreshException ("[-5224][OB_WRONG_NAME_FOR_INDEX] index name is wrong " );
12581272 }
12591273 } catch (SQLException e ) {
12601274 // cannot execute sql, maybe some of the observers have been killed
1261- RUNTIME .error (LCD .convert ("01-00010" ), indexTableName , e .getMessage ());
1275+ RUNTIME .error (LCD .convert ("01-00010" ), getActualIndexName ( indexTableName ) , e .getMessage ());
12621276 throw new ObTableEntryRefreshException ("fail to get index info from remote" , e , true );
12631277 } catch (Exception e ) {
12641278 if (e instanceof ObTableEntryRefreshException ) {
12651279 throw new ObTableEntryRefreshException (format (
1266- "fail to get index info from remote, indexTableName : %s, error message: %s" ,
1267- indexTableName , e .getMessage ()), e ,
1280+ "fail to get index info from remote, indexName : %s, error message: %s" ,
1281+ getActualIndexName ( indexTableName ) , e .getMessage ()), e ,
12681282 ((ObTableEntryRefreshException ) e ).isConnectInactive ());
12691283 } else {
12701284 throw new ObTableEntryRefreshException (format (
1271- "fail to get index info from remote, indexTableName : %s, error message: %s" ,
1272- indexTableName , e .getMessage ()), e );
1285+ "fail to get index info from remote, indexName : %s, error message: %s" ,
1286+ getActualIndexName ( indexTableName ) , e .getMessage ()), e );
12731287 }
12741288 } finally {
12751289 try {
0 commit comments