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 =