From 0fda02e13a30b588c348b094f400cbebbfc0f0cd Mon Sep 17 00:00:00 2001 From: shitou Date: Mon, 23 May 2022 15:03:42 +0800 Subject: [PATCH] [hotfix-859][core] Fix NPE when NameMapping is empty. --- .../chunjun/connector/doris/sink/DorisSinkFactory.java | 4 +++- .../com/dtstack/chunjun/mapping/NameMappingConf.java | 10 ++++++++++ .../dtstack/chunjun/mapping/NameMappingFlatMap.java | 6 ++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/chunjun-connectors/chunjun-connector-doris/src/main/java/com/dtstack/chunjun/connector/doris/sink/DorisSinkFactory.java b/chunjun-connectors/chunjun-connector-doris/src/main/java/com/dtstack/chunjun/connector/doris/sink/DorisSinkFactory.java index dd601536cd..5942109d09 100644 --- a/chunjun-connectors/chunjun-connector-doris/src/main/java/com/dtstack/chunjun/connector/doris/sink/DorisSinkFactory.java +++ b/chunjun-connectors/chunjun-connector-doris/src/main/java/com/dtstack/chunjun/connector/doris/sink/DorisSinkFactory.java @@ -137,7 +137,9 @@ public DorisSinkFactory(SyncConf syncConf) { .setLoadProperties( parameter.getProperties(LOAD_PROPERTIES_KEY, new Properties())) .setPassword(parameter.getStringVal(PASSWORD_KEY, "")) - .setNameMapped(syncConf.getNameMappingConf() != null) + .setNameMapped( + syncConf.getNameMappingConf() != null + && !syncConf.getNameMappingConf().isEmpty()) .setWriteMode( parameter.getStringVal(WRITE_MODE_KEY, DORIS_WRITE_MODE_DEFAULT)) .setUsername(parameter.getStringVal(USER_NAME_KEY)) diff --git a/chunjun-core/src/main/java/com/dtstack/chunjun/mapping/NameMappingConf.java b/chunjun-core/src/main/java/com/dtstack/chunjun/mapping/NameMappingConf.java index 5ee7331ad9..6709508f25 100644 --- a/chunjun-core/src/main/java/com/dtstack/chunjun/mapping/NameMappingConf.java +++ b/chunjun-core/src/main/java/com/dtstack/chunjun/mapping/NameMappingConf.java @@ -20,6 +20,8 @@ package com.dtstack.chunjun.mapping; +import org.apache.commons.lang.StringUtils; + import java.io.Serializable; import java.util.HashMap; import java.util.Map; @@ -83,6 +85,14 @@ public void setSqlConevnt(Boolean sqlConevnt) { this.sqlConevnt = sqlConevnt; } + public boolean isEmpty() { + return tableMappings.isEmpty() + && schemaMappings.isEmpty() + && fieldMappings.isEmpty() + && StringUtils.isEmpty(pattern) + && null == sqlConevnt; + } + @Override public String toString() { return new StringJoiner(", ", NameMappingConf.class.getSimpleName() + "[", "]") diff --git a/chunjun-core/src/main/java/com/dtstack/chunjun/mapping/NameMappingFlatMap.java b/chunjun-core/src/main/java/com/dtstack/chunjun/mapping/NameMappingFlatMap.java index 14c81836e9..64ef0a7c48 100644 --- a/chunjun-core/src/main/java/com/dtstack/chunjun/mapping/NameMappingFlatMap.java +++ b/chunjun-core/src/main/java/com/dtstack/chunjun/mapping/NameMappingFlatMap.java @@ -43,6 +43,7 @@ public class NameMappingFlatMap extends RichFlatMapFunction { private final MappingClient client; private final DdlConvent source; private final DdlConvent sink; + private final boolean turnOff; private final ConventExceptionProcessHandler conventExceptionProcessHandler; public NameMappingFlatMap( @@ -50,6 +51,7 @@ public NameMappingFlatMap( DdlConvent source, DdlConvent sink, ConventExceptionProcessHandler conventExceptionProcessHandler) { + this.turnOff = conf == null || conf.isEmpty(); this.client = new MappingClient(conf); this.source = source; this.sink = sink; @@ -59,6 +61,10 @@ public NameMappingFlatMap( @Override public void flatMap(RowData value, Collector collector) { + if (turnOff) { + collector.collect(value); + return; + } RowData rowData = client.map(value); if (rowData instanceof ColumnRowData) { collector.collect(rowData);