You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@seatunnel.apache.org by fa...@apache.org on 2023/05/15 10:24:09 UTC

[incubator-seatunnel] branch dev updated: [Improve][Core] Add check of sink and source config to avoid null pointer exception. (#4734)

This is an automated email from the ASF dual-hosted git repository.

fanjia pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-seatunnel.git


The following commit(s) were added to refs/heads/dev by this push:
     new 8f66ce96c [Improve][Core] Add check of sink and source config to avoid null pointer exception. (#4734)
8f66ce96c is described below

commit 8f66ce96cbdd2b7a867999aebb5b1aee32d71d2d
Author: FlechazoW <35...@users.noreply.github.com>
AuthorDate: Mon May 15 18:24:01 2023 +0800

    [Improve][Core] Add check of sink and source config to avoid null pointer exception. (#4734)
---
 .../seatunnel/jdbc/catalog/mysql/MySqlCatalogFactory.java          | 7 +++++++
 .../org/apache/seatunnel/core/starter/utils/ConfigShadeUtils.java  | 5 +++++
 2 files changed, 12 insertions(+)

diff --git a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/mysql/MySqlCatalogFactory.java b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/mysql/MySqlCatalogFactory.java
index 91d6bfc62..014af151c 100644
--- a/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/mysql/MySqlCatalogFactory.java
+++ b/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/catalog/mysql/MySqlCatalogFactory.java
@@ -17,6 +17,8 @@
 
 package org.apache.seatunnel.connectors.seatunnel.jdbc.catalog.mysql;
 
+import org.apache.seatunnel.shade.com.google.common.base.Preconditions;
+
 import org.apache.seatunnel.api.configuration.ReadonlyConfig;
 import org.apache.seatunnel.api.configuration.util.OptionRule;
 import org.apache.seatunnel.api.configuration.util.OptionValidationException;
@@ -26,6 +28,8 @@ import org.apache.seatunnel.api.table.factory.Factory;
 import org.apache.seatunnel.common.utils.JdbcUrlUtil;
 import org.apache.seatunnel.connectors.seatunnel.jdbc.catalog.JdbcCatalogOptions;
 
+import org.apache.commons.lang3.StringUtils;
+
 import com.google.auto.service.AutoService;
 
 import java.util.Optional;
@@ -41,6 +45,9 @@ public class MySqlCatalogFactory implements CatalogFactory {
     @Override
     public Catalog createCatalog(String catalogName, ReadonlyConfig options) {
         String urlWithDatabase = options.get(JdbcCatalogOptions.BASE_URL);
+        Preconditions.checkArgument(
+                StringUtils.isNoneBlank(urlWithDatabase),
+                "Miss config <base-url>! Please check your config.");
         JdbcUrlUtil.UrlInfo urlInfo = JdbcUrlUtil.getUrlInfo(urlWithDatabase);
         Optional<String> defaultDatabase = urlInfo.getDefaultDatabase();
         if (!defaultDatabase.isPresent()) {
diff --git a/seatunnel-core/seatunnel-core-starter/src/main/java/org/apache/seatunnel/core/starter/utils/ConfigShadeUtils.java b/seatunnel-core/seatunnel-core-starter/src/main/java/org/apache/seatunnel/core/starter/utils/ConfigShadeUtils.java
index fc4f458b6..a1e3dffe0 100644
--- a/seatunnel-core/seatunnel-core-starter/src/main/java/org/apache/seatunnel/core/starter/utils/ConfigShadeUtils.java
+++ b/seatunnel-core/seatunnel-core-starter/src/main/java/org/apache/seatunnel/core/starter/utils/ConfigShadeUtils.java
@@ -18,6 +18,7 @@
 package org.apache.seatunnel.core.starter.utils;
 
 import org.apache.seatunnel.shade.com.fasterxml.jackson.databind.node.ObjectNode;
+import org.apache.seatunnel.shade.com.google.common.base.Preconditions;
 import org.apache.seatunnel.shade.com.typesafe.config.Config;
 import org.apache.seatunnel.shade.com.typesafe.config.ConfigFactory;
 import org.apache.seatunnel.shade.com.typesafe.config.ConfigRenderOptions;
@@ -142,6 +143,10 @@ public final class ConfigShadeUtils {
                 (ArrayList<Map<String, Object>>) configMap.get(Constants.SOURCE);
         List<Map<String, Object>> sinks =
                 (ArrayList<Map<String, Object>>) configMap.get(Constants.SINK);
+        Preconditions.checkArgument(
+                !sources.isEmpty(), "Miss <Source> config! Please check the config file.");
+        Preconditions.checkArgument(
+                !sinks.isEmpty(), "Miss <Sink> config! Please check the config file.");
         sources.forEach(
                 source -> {
                     for (String sensitiveOption : sensitiveOptions) {