From 5ac0f7b710c02d1612ca2c5775e6d572bace5512 Mon Sep 17 00:00:00 2001 From: Z6N Date: Tue, 18 Jun 2019 15:01:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8C=89=E4=B8=BB=E9=94=AE=E6=95=A3=E5=88=97?= =?UTF-8?q?=EF=BC=8C=E6=9C=AA=E8=AE=BE=E7=BD=AE=E4=B8=BB=E9=94=AE=E6=97=B6?= =?UTF-8?q?=E6=97=A0=E9=99=90=E7=A9=BA=E6=8C=87=E9=92=88=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=20(#1889)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 当按注解散列时,如果监控的表未显示设置主键,将会导致flatMessage.getPkNames()为空,导致无限空指针异常 --- .../alibaba/otter/canal/common/MQMessageUtils.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/server/src/main/java/com/alibaba/otter/canal/common/MQMessageUtils.java b/server/src/main/java/com/alibaba/otter/canal/common/MQMessageUtils.java index 9161f8a5..de06d3b2 100644 --- a/server/src/main/java/com/alibaba/otter/canal/common/MQMessageUtils.java +++ b/server/src/main/java/com/alibaba/otter/canal/common/MQMessageUtils.java @@ -446,12 +446,14 @@ public class MQMessageUtils { int idx = 0; for (Map row : flatMessage.getData()) { int hashCode = database.hashCode(); - for (String pkName : pkNames) { - String value = row.get(pkName); - if (value == null) { - value = ""; + if (pkNames != null) { + for (String pkName : pkNames) { + String value = row.get(pkName); + if (value == null) { + value = ""; + } + hashCode = hashCode ^ value.hashCode(); } - hashCode = hashCode ^ value.hashCode(); } int pkHash = Math.abs(hashCode) % partitionsNum;