fixed issue #724 , retry for broke pipe

This commit is contained in:
七锋
2018-07-16 22:45:16 +08:00
parent 3308bf0662
commit 3efd589cb1

View File

@@ -298,7 +298,17 @@ public class DatabaseTableMeta implements TableMetaTSDB {
createDDL = packet.getFieldValues().get(1); createDDL = packet.getFieldValues().get(1);
tableMetaFromDB.setFields(TableMetaCache.parseTableMeta(schema, table, packet)); tableMetaFromDB.setFields(TableMetaCache.parseTableMeta(schema, table, packet));
} }
} catch (IOException e) { } 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")) { if (e.getMessage().contains("errorNumber=1146")) {
logger.error("table not exist in db , pls check :" + getFullName(schema, table) + " , mem : " logger.error("table not exist in db , pls check :" + getFullName(schema, table) + " , mem : "
+ tableMetaFromMem); + tableMetaFromMem);
@@ -306,6 +316,7 @@ public class DatabaseTableMeta implements TableMetaTSDB {
} }
throw new CanalParseException(e); throw new CanalParseException(e);
} }
}
boolean result = compareTableMeta(tableMetaFromMem, tableMetaFromDB); boolean result = compareTableMeta(tableMetaFromMem, tableMetaFromDB);
if (!result) { if (!result) {