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

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


The following commit(s) were added to refs/heads/dev by this push:
     new de7b86a5dd [fix][hive-source][bug] fix An error occurred reading an 
empty directory (#5427)
de7b86a5dd is described below

commit de7b86a5dd24d9cff4fa28ca7b8eadbd50ed8bb9
Author: ZhilinLi <[email protected]>
AuthorDate: Tue Sep 12 15:21:05 2023 +0800

    [fix][hive-source][bug] fix An error occurred reading an empty directory 
(#5427)
    
    * [fix][hive-source][bug] fix An error occurred reading an empty directory
    
    * [fix][hive-source][bug] fix An error occurred reading an empty directory
---
 .../file/source/reader/AbstractReadStrategy.java   | 22 ++++++++--------------
 .../file/source/reader/ExcelReadStrategy.java      |  3 ++-
 .../file/source/reader/TextReadStrategy.java       |  3 ++-
 3 files changed, 12 insertions(+), 16 deletions(-)

diff --git 
a/seatunnel-connectors-v2/connector-file/connector-file-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/source/reader/AbstractReadStrategy.java
 
b/seatunnel-connectors-v2/connector-file/connector-file-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/source/reader/AbstractReadStrategy.java
index e4e1694f30..1dc8e7a2ad 100644
--- 
a/seatunnel-connectors-v2/connector-file/connector-file-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/source/reader/AbstractReadStrategy.java
+++ 
b/seatunnel-connectors-v2/connector-file/connector-file-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/source/reader/AbstractReadStrategy.java
@@ -24,8 +24,6 @@ import org.apache.seatunnel.api.table.type.SeaTunnelDataType;
 import org.apache.seatunnel.api.table.type.SeaTunnelRowType;
 import org.apache.seatunnel.connectors.seatunnel.file.config.BaseSourceConfig;
 import org.apache.seatunnel.connectors.seatunnel.file.config.HadoopConf;
-import 
org.apache.seatunnel.connectors.seatunnel.file.exception.FileConnectorErrorCode;
-import 
org.apache.seatunnel.connectors.seatunnel.file.exception.FileConnectorException;
 import 
org.apache.seatunnel.connectors.seatunnel.file.sink.util.FileSystemUtils;
 
 import org.apache.hadoop.conf.Configuration;
@@ -153,15 +151,9 @@ public abstract class AbstractReadStrategy implements 
ReadStrategy {
                 }
             }
         }
-
-        if (fileNames.isEmpty()) {
-            throw new FileConnectorException(
-                    FileConnectorErrorCode.FILE_LIST_EMPTY,
-                    "The target file list is empty,"
-                            + "SeaTunnel will not be able to sync empty table, 
"
-                            + "please check the configuration parameters such 
as: [file_filter_pattern]");
+        if (this.fileNames.isEmpty()) {
+            log.error("The current directory is empty " + path);
         }
-
         return fileNames;
     }
 
@@ -196,10 +188,12 @@ public abstract class AbstractReadStrategy implements 
ReadStrategy {
 
     protected Map<String, String> parsePartitionsByPath(String path) {
         LinkedHashMap<String, String> partitions = new LinkedHashMap<>();
-        Arrays.stream(path.split("/", -1))
-                .filter(split -> split.contains("="))
-                .map(split -> split.split("=", -1))
-                .forEach(kv -> partitions.put(kv[0], kv[1]));
+        if (path != null && !path.isEmpty()) {
+            Arrays.stream(path.split("/", -1))
+                    .filter(split -> split.contains("="))
+                    .map(split -> split.split("=", -1))
+                    .forEach(kv -> partitions.put(kv[0], kv[1]));
+        }
         return partitions;
     }
 
diff --git 
a/seatunnel-connectors-v2/connector-file/connector-file-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/source/reader/ExcelReadStrategy.java
 
b/seatunnel-connectors-v2/connector-file/connector-file-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/source/reader/ExcelReadStrategy.java
index 0b1cfc083b..649216c752 100644
--- 
a/seatunnel-connectors-v2/connector-file/connector-file-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/source/reader/ExcelReadStrategy.java
+++ 
b/seatunnel-connectors-v2/connector-file/connector-file-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/source/reader/ExcelReadStrategy.java
@@ -136,7 +136,8 @@ public class ExcelReadStrategy extends AbstractReadStrategy 
{
                     "Schmea information is not set or incorrect schmea 
settings");
         }
         SeaTunnelRowType userDefinedRowTypeWithPartition =
-                mergePartitionTypes(fileNames.get(0), seaTunnelRowType);
+                mergePartitionTypes(
+                        fileNames.size() > 0 ? fileNames.get(0) : null, 
seaTunnelRowType);
         // column projection
         if (pluginConfig.hasPath(BaseSourceConfig.READ_COLUMNS.key())) {
             // get the read column index from user-defined row type
diff --git 
a/seatunnel-connectors-v2/connector-file/connector-file-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/source/reader/TextReadStrategy.java
 
b/seatunnel-connectors-v2/connector-file/connector-file-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/source/reader/TextReadStrategy.java
index 4b931cb890..eefa8e4de7 100644
--- 
a/seatunnel-connectors-v2/connector-file/connector-file-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/source/reader/TextReadStrategy.java
+++ 
b/seatunnel-connectors-v2/connector-file/connector-file-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/source/reader/TextReadStrategy.java
@@ -138,7 +138,8 @@ public class TextReadStrategy extends AbstractReadStrategy {
     @Override
     public void setSeaTunnelRowTypeInfo(SeaTunnelRowType seaTunnelRowType) {
         SeaTunnelRowType userDefinedRowTypeWithPartition =
-                mergePartitionTypes(fileNames.get(0), seaTunnelRowType);
+                mergePartitionTypes(
+                        fileNames.size() > 0 ? fileNames.get(0) : null, 
seaTunnelRowType);
         if (pluginConfig.hasPath(BaseSourceConfig.DELIMITER.key())) {
             fieldDelimiter = 
pluginConfig.getString(BaseSourceConfig.DELIMITER.key());
         } else {

Reply via email to