fixed delete message send mq bugfix

This commit is contained in:
agapple
2019-05-28 00:14:20 +08:00
parent e808c6ec70
commit 058e1fc546

View File

@@ -222,33 +222,26 @@ public class MQMessageUtils {
} else { } else {
for (CanalEntry.RowData rowData : rowChange.getRowDatasList()) { for (CanalEntry.RowData rowData : rowChange.getRowDatasList()) {
int hashCode = database.hashCode(); int hashCode = database.hashCode();
CanalEntry.EventType eventType = rowChange.getEventType();
List<CanalEntry.Column> columns = null;
if (eventType == CanalEntry.EventType.DELETE) {
columns = rowData.getBeforeColumnsList();
} else {
columns = rowData.getAfterColumnsList();
}
if (hashMode.autoPkHash) { if (hashMode.autoPkHash) {
// isEmpty use default pkNames // isEmpty use default pkNames
for (CanalEntry.Column column : rowData.getAfterColumnsList()) { for (CanalEntry.Column column : columns) {
if (column.getIsKey()) { if (column.getIsKey()) {
hashCode = hashCode ^ column.getValue().hashCode(); hashCode = hashCode ^ column.getValue().hashCode();
} }
} }
} else { } else {
try { for (CanalEntry.Column column : columns) {
CanalEntry.EventType eventType = RowChange.parseFrom(entry.getStoreValue()).getEventType(); if (checkPkNamesHasContain(hashMode.pkNames, column.getName())) {
if(eventType == CanalEntry.EventType.DELETE){ hashCode = hashCode ^ column.getValue().hashCode();
for (CanalEntry.Column column : rowData.getBeforeColumnsList()) {
if (checkPkNamesHasContain(hashMode.pkNames, column.getName())) {
hashCode = hashCode ^ column.getValue().hashCode();
}
}
} }
else {
for (CanalEntry.Column column : rowData.getAfterColumnsList()) {
if (checkPkNamesHasContain(hashMode.pkNames, column.getName())) {
hashCode = hashCode ^ column.getValue().hashCode();
}
}
}
}
catch (InvalidProtocolBufferException e) {
e.printStackTrace();
} }
} }