This is an automated email from the ASF dual-hosted git repository.
dataroaring pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 8fe520a9836 [fix](group commit) forbid set group_commit_interval_ms
and group_commit_data_bytes to 0 (#61034)
8fe520a9836 is described below
commit 8fe520a9836e91103b1ebcdcb78991b41f342952
Author: meiyi <[email protected]>
AuthorDate: Mon Mar 9 19:31:13 2026 +0800
[fix](group commit) forbid set group_commit_interval_ms and
group_commit_data_bytes to 0 (#61034)
---
.../cloud/alter/CloudSchemaChangeHandler.java | 6 ++--
.../apache/doris/common/util/PropertyAnalyzer.java | 23 +++++++++++----
.../apache/doris/datasource/InternalCatalog.java | 4 +--
.../commands/info/ModifyTablePropertiesOp.java | 26 ++---------------
.../insert_p0/insert_group_commit_into.groovy | 34 ++++++++++++++++++++++
5 files changed, 57 insertions(+), 36 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/cloud/alter/CloudSchemaChangeHandler.java
b/fe/fe-core/src/main/java/org/apache/doris/cloud/alter/CloudSchemaChangeHandler.java
index 1b4c1899845..d199fcbb10e 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/cloud/alter/CloudSchemaChangeHandler.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/cloud/alter/CloudSchemaChangeHandler.java
@@ -152,8 +152,7 @@ public class CloudSchemaChangeHandler extends
SchemaChangeHandler {
param.ttlSeconds = ttlSeconds;
param.type = UpdatePartitionMetaParam.TabletMetaType.TTL_SECONDS;
} else if
(properties.containsKey(PropertyAnalyzer.PROPERTIES_GROUP_COMMIT_INTERVAL_MS)) {
- long groupCommitIntervalMs =
Long.parseLong(properties.get(PropertyAnalyzer
- .PROPERTIES_GROUP_COMMIT_INTERVAL_MS));
+ int groupCommitIntervalMs =
PropertyAnalyzer.analyzeGroupCommitIntervalMs(properties, false);
olapTable.readLock();
try {
if (groupCommitIntervalMs ==
olapTable.getGroupCommitIntervalMs()) {
@@ -168,8 +167,7 @@ public class CloudSchemaChangeHandler extends
SchemaChangeHandler {
param.groupCommitIntervalMs = groupCommitIntervalMs;
param.type =
UpdatePartitionMetaParam.TabletMetaType.GROUP_COMMIT_INTERVAL_MS;
} else if
(properties.containsKey(PropertyAnalyzer.PROPERTIES_GROUP_COMMIT_DATA_BYTES)) {
- long groupCommitDataBytes =
Long.parseLong(properties.get(PropertyAnalyzer
- .PROPERTIES_GROUP_COMMIT_DATA_BYTES));
+ int groupCommitDataBytes =
PropertyAnalyzer.analyzeGroupCommitDataBytes(properties, false);
olapTable.readLock();
try {
if (groupCommitDataBytes ==
olapTable.getGroupCommitDataBytes()) {
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/common/util/PropertyAnalyzer.java
b/fe/fe-core/src/main/java/org/apache/doris/common/util/PropertyAnalyzer.java
index 4a9818aed7d..02347cd38e7 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/common/util/PropertyAnalyzer.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/common/util/PropertyAnalyzer.java
@@ -1857,11 +1857,11 @@ public class PropertyAnalyzer {
* 1000
*
* @param properties
- * @param defaultValue
* @return
* @throws AnalysisException
*/
- public static int analyzeGroupCommitIntervalMs(Map<String, String>
properties) throws AnalysisException {
+ public static int analyzeGroupCommitIntervalMs(Map<String, String>
properties, boolean removeProperty)
+ throws AnalysisException {
int groupCommitIntervalMs =
PROPERTIES_GROUP_COMMIT_INTERVAL_MS_DEFAULT_VALUE;
if (properties != null &&
properties.containsKey(PROPERTIES_GROUP_COMMIT_INTERVAL_MS)) {
String groupIntervalCommitMsStr =
properties.get(PROPERTIES_GROUP_COMMIT_INTERVAL_MS);
@@ -1870,24 +1870,35 @@ public class PropertyAnalyzer {
} catch (Exception e) {
throw new AnalysisException("parse group_commit_interval_ms
format error");
}
+ if (groupCommitIntervalMs <= 0) {
+ throw new AnalysisException("group_commit_interval_ms must be
greater than 0");
+ }
- properties.remove(PROPERTIES_GROUP_COMMIT_INTERVAL_MS);
+ if (removeProperty) {
+ properties.remove(PROPERTIES_GROUP_COMMIT_INTERVAL_MS);
+ }
}
return groupCommitIntervalMs;
}
- public static int analyzeGroupCommitDataBytes(Map<String, String>
properties) throws AnalysisException {
+ public static int analyzeGroupCommitDataBytes(Map<String, String>
properties, boolean removeProperty)
+ throws AnalysisException {
int groupCommitDataBytes =
PROPERTIES_GROUP_COMMIT_DATA_BYTES_DEFAULT_VALUE;
if (properties != null &&
properties.containsKey(PROPERTIES_GROUP_COMMIT_DATA_BYTES)) {
String groupIntervalCommitDataBytesStr =
properties.get(PROPERTIES_GROUP_COMMIT_DATA_BYTES);
try {
groupCommitDataBytes =
Integer.parseInt(groupIntervalCommitDataBytesStr);
} catch (Exception e) {
- throw new AnalysisException("parse group_commit_interval_ms
format error");
+ throw new AnalysisException("parse group_commit_data_bytes
format error");
+ }
+ if (groupCommitDataBytes <= 0) {
+ throw new AnalysisException("group_commit_data_bytes must be
greater than 0");
}
- properties.remove(PROPERTIES_GROUP_COMMIT_DATA_BYTES);
+ if (removeProperty) {
+ properties.remove(PROPERTIES_GROUP_COMMIT_DATA_BYTES);
+ }
}
return groupCommitDataBytes;
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java
b/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java
index 50fc4edea69..14a13343939 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java
@@ -2933,14 +2933,14 @@ public class InternalCatalog implements
CatalogIf<Database> {
throw new DdlException(e.getMessage());
}
try {
- int groupCommitIntervalMs =
PropertyAnalyzer.analyzeGroupCommitIntervalMs(properties);
+ int groupCommitIntervalMs =
PropertyAnalyzer.analyzeGroupCommitIntervalMs(properties, true);
olapTable.setGroupCommitIntervalMs(groupCommitIntervalMs);
} catch (Exception e) {
throw new DdlException(e.getMessage());
}
try {
- int groupCommitDataBytes =
PropertyAnalyzer.analyzeGroupCommitDataBytes(properties);
+ int groupCommitDataBytes =
PropertyAnalyzer.analyzeGroupCommitDataBytes(properties, true);
olapTable.setGroupCommitDataBytes(groupCommitDataBytes);
} catch (Exception e) {
throw new DdlException(e.getMessage());
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/ModifyTablePropertiesOp.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/ModifyTablePropertiesOp.java
index dc55d99d249..72f4a00bf2c 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/ModifyTablePropertiesOp.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/ModifyTablePropertiesOp.java
@@ -310,33 +310,11 @@ public class ModifyTablePropertiesOp extends AlterTableOp
{
this.needTableStable = false;
this.opType = AlterOpType.MODIFY_TABLE_PROPERTY_SYNC;
} else if
(properties.containsKey(PropertyAnalyzer.PROPERTIES_GROUP_COMMIT_INTERVAL_MS)) {
- long groupCommitIntervalMs;
- String groupCommitIntervalMsStr =
properties.get(PropertyAnalyzer.PROPERTIES_GROUP_COMMIT_INTERVAL_MS);
- try {
- groupCommitIntervalMs =
Long.parseLong(groupCommitIntervalMsStr);
- if (groupCommitIntervalMs < 0) {
- throw new AnalysisException("group_commit_interval_ms can
not be less than 0:"
- + groupCommitIntervalMsStr);
- }
- } catch (NumberFormatException e) {
- throw new AnalysisException("Invalid group_commit_interval_ms
format: "
- + groupCommitIntervalMsStr);
- }
+ PropertyAnalyzer.analyzeGroupCommitIntervalMs(properties, false);
this.needTableStable = false;
this.opType = AlterOpType.MODIFY_TABLE_PROPERTY_SYNC;
} else if
(properties.containsKey(PropertyAnalyzer.PROPERTIES_GROUP_COMMIT_DATA_BYTES)) {
- long groupCommitDataBytes;
- String groupCommitDataBytesStr =
properties.get(PropertyAnalyzer.PROPERTIES_GROUP_COMMIT_DATA_BYTES);
- try {
- groupCommitDataBytes = Long.parseLong(groupCommitDataBytesStr);
- if (groupCommitDataBytes < 0) {
- throw new AnalysisException("group_commit_data_bytes can
not be less than 0:"
- + groupCommitDataBytesStr);
- }
- } catch (NumberFormatException e) {
- throw new AnalysisException("Invalid group_commit_data_bytes
format: "
- + groupCommitDataBytesStr);
- }
+ PropertyAnalyzer.analyzeGroupCommitDataBytes(properties, false);
this.needTableStable = false;
this.opType = AlterOpType.MODIFY_TABLE_PROPERTY_SYNC;
} else if
(properties.containsKey(PropertyAnalyzer.PROPERTIES_FILE_CACHE_TTL_SECONDS)) {
diff --git a/regression-test/suites/insert_p0/insert_group_commit_into.groovy
b/regression-test/suites/insert_p0/insert_group_commit_into.groovy
index 1b9b31db1d3..ff8aaeeefc7 100644
--- a/regression-test/suites/insert_p0/insert_group_commit_into.groovy
+++ b/regression-test/suites/insert_p0/insert_group_commit_into.groovy
@@ -479,6 +479,40 @@ suite("insert_group_commit_into") {
exception """null value for not null column"""
}
getRowCount(2)
+
+ // test invalid group_commit_interval_ms and group_commit_data_bytes
+ test {
+ sql """ ALTER TABLE ${table} SET ("group_commit_interval_ms" =
"0"); """
+ exception """group_commit_interval_ms must be greater than 0"""
+ }
+ test {
+ sql """ ALTER TABLE ${table} SET ("group_commit_data_bytes" =
"0"); """
+ exception """group_commit_data_bytes must be greater than 0"""
+ }
+ test {
+ sql """ drop table if exists ${table}_invalid; """
+ sql """ CREATE TABLE IF NOT EXISTS ${table}_invalid ( k1 INT not
null )
+ DUPLICATE KEY(`k1`)
+ DISTRIBUTED BY HASH(`k1`)
+ BUCKETS 1 PROPERTIES (
+ "replication_allocation" = "tag.location.default: 1",
+ "group_commit_interval_ms" = "0",
+ "group_commit_data_bytes" = "100"
+ );
+ """
+ exception """group_commit_interval_ms must be greater than 0"""
+ }
+ test {
+ sql """ CREATE TABLE IF NOT EXISTS ${table}_invalid ( k1 INT not
null )
+ DUPLICATE KEY(`k1`)
+ DISTRIBUTED BY HASH(`k1`)
+ BUCKETS 1 PROPERTIES (
+ "replication_allocation" = "tag.location.default: 1",
+ "group_commit_data_bytes" = "0"
+ );
+ """
+ exception """group_commit_data_bytes must be greater than 0"""
+ }
} finally {
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]