删除操作计算hash值的情况没有考虑,导致删除时的分区和插入时的分区不一致 (#1848)

This commit is contained in:
Marsss___
2019-05-27 23:54:25 +08:00
committed by agapple
parent d0a83aad27
commit 37fc248ebf

View File

@@ -230,10 +230,25 @@ public class MQMessageUtils {
} }
} }
} else { } else {
for (CanalEntry.Column column : rowData.getAfterColumnsList()) { try {
if (checkPkNamesHasContain(hashMode.pkNames, column.getName())) { CanalEntry.EventType eventType = RowChange.parseFrom(entry.getStoreValue()).getEventType();
hashCode = hashCode ^ column.getValue().hashCode(); if(eventType == CanalEntry.EventType.DELETE){
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();
} }
} }