fixed issue #724 , retry for broke pipe
This commit is contained in:
+17
-6
@@ -298,13 +298,24 @@ public class DatabaseTableMeta implements TableMetaTSDB {
|
||||
createDDL = packet.getFieldValues().get(1);
|
||||
tableMetaFromDB.setFields(TableMetaCache.parseTableMeta(schema, table, packet));
|
||||
}
|
||||
} catch (IOException e) {
|
||||
if (e.getMessage().contains("errorNumber=1146")) {
|
||||
logger.error("table not exist in db , pls check :" + getFullName(schema, table) + " , mem : "
|
||||
+ tableMetaFromMem);
|
||||
return false;
|
||||
} catch (Throwable e) {
|
||||
try {
|
||||
// retry for broke pipe, see:
|
||||
// https://github.com/alibaba/canal/issues/724
|
||||
connection.reconnect();
|
||||
ResultSetPacket packet = connection.query("show create table " + getFullName(schema, table));
|
||||
if (packet.getFieldValues().size() > 1) {
|
||||
createDDL = packet.getFieldValues().get(1);
|
||||
tableMetaFromDB.setFields(TableMetaCache.parseTableMeta(schema, table, packet));
|
||||
}
|
||||
} catch (IOException e1) {
|
||||
if (e.getMessage().contains("errorNumber=1146")) {
|
||||
logger.error("table not exist in db , pls check :" + getFullName(schema, table) + " , mem : "
|
||||
+ tableMetaFromMem);
|
||||
return false;
|
||||
}
|
||||
throw new CanalParseException(e);
|
||||
}
|
||||
throw new CanalParseException(e);
|
||||
}
|
||||
|
||||
boolean result = compareTableMeta(tableMetaFromMem, tableMetaFromDB);
|
||||
|
||||
Reference in New Issue
Block a user