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

lzljs3620320 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/paimon.git


The following commit(s) were added to refs/heads/master by this push:
     new f6fbef087 [core] Check consumer-id cannot be blank string (#4107)
f6fbef087 is described below

commit f6fbef08733693fc7f622127c0c296595dbabefb
Author: xuzifu666 <[email protected]>
AuthorDate: Sat Aug 31 21:40:46 2024 +0800

    [core] Check consumer-id cannot be blank string (#4107)
---
 .../main/java/org/apache/paimon/CoreOptions.java   |  6 ++++-
 .../java/org/apache/paimon/utils/StringUtils.java  |  7 ++++++
 .../paimon/table/FileStoreTableTestBase.java       | 26 ++++++++++++++++++++++
 3 files changed, 38 insertions(+), 1 deletion(-)

diff --git a/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java 
b/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java
index a9da36e7d..3c1bdf6fd 100644
--- a/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java
+++ b/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java
@@ -1927,7 +1927,11 @@ public class CoreOptions implements Serializable {
     }
 
     public String consumerId() {
-        return options.get(CONSUMER_ID);
+        String consumerId = options.get(CONSUMER_ID);
+        if (StringUtils.isBlankString(consumerId)) {
+            throw new RuntimeException("consumer id cannot be blank string");
+        }
+        return consumerId;
     }
 
     public static StreamingReadMode streamReadType(Options options) {
diff --git 
a/paimon-common/src/main/java/org/apache/paimon/utils/StringUtils.java 
b/paimon-common/src/main/java/org/apache/paimon/utils/StringUtils.java
index 3dbc9779e..7b4bce9be 100644
--- a/paimon-common/src/main/java/org/apache/paimon/utils/StringUtils.java
+++ b/paimon-common/src/main/java/org/apache/paimon/utils/StringUtils.java
@@ -551,6 +551,13 @@ public class StringUtils {
         return true;
     }
 
+    public static boolean isBlankString(String str) {
+        if (str != null && str.length() == 0) {
+            return true;
+        }
+        return false;
+    }
+
     public static String quote(String str) {
         return "`" + str + "`";
     }
diff --git 
a/paimon-core/src/test/java/org/apache/paimon/table/FileStoreTableTestBase.java 
b/paimon-core/src/test/java/org/apache/paimon/table/FileStoreTableTestBase.java
index 937005d21..fe82e9f07 100644
--- 
a/paimon-core/src/test/java/org/apache/paimon/table/FileStoreTableTestBase.java
+++ 
b/paimon-core/src/test/java/org/apache/paimon/table/FileStoreTableTestBase.java
@@ -667,6 +667,32 @@ public abstract class FileStoreTableTestBase {
                                 
"1|40|400|binary|varbinary|mapKey:mapVal|multiset|4000"));
     }
 
+    @Test
+    public void testConsumerIdNotBlank() throws Exception {
+        FileStoreTable table =
+                createFileStoreTable(
+                        options -> {
+                            options.set(CoreOptions.CONSUMER_ID, "");
+                            options.set(SNAPSHOT_NUM_RETAINED_MIN, 3);
+                            options.set(SNAPSHOT_NUM_RETAINED_MAX, 3);
+                        });
+
+        StreamWriteBuilder writeBuilder = table.newStreamWriteBuilder();
+        StreamTableWrite write = writeBuilder.newWrite();
+        StreamTableCommit commit = writeBuilder.newCommit();
+
+        ReadBuilder readBuilder = table.newReadBuilder();
+        StreamTableScan scan = readBuilder.newStreamScan();
+        TableRead read = readBuilder.newRead();
+
+        write.write(rowData(1, 10, 100L));
+        commit.commit(0, write.prepareCommit(true, 0));
+
+        // assert can't set consumer-id to blank string
+        assertThatThrownBy(() -> getResult(read, scan.plan().splits(), 
STREAMING_ROW_TO_STRING))
+                .isInstanceOf(RuntimeException.class);
+    }
+
     @Test
     public void testConsumeId() throws Exception {
         FileStoreTable table =

Reply via email to