This is an automated email from the ASF dual-hosted git repository.
jackie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git
The following commit(s) were added to refs/heads/master by this push:
new a29e93b92f Disallow tenant tag override with upsert tables (#11468)
a29e93b92f is described below
commit a29e93b92f3d3a8df613c3271d12674545342f99
Author: Saurabh Dubey <[email protected]>
AuthorDate: Fri Sep 1 09:55:58 2023 +0530
Disallow tenant tag override with upsert tables (#11468)
---
.../apache/pinot/segment/local/utils/TableConfigUtils.java | 2 ++
.../pinot/segment/local/utils/TableConfigUtilsTest.java | 14 ++++++++++++++
2 files changed, 16 insertions(+)
diff --git
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/utils/TableConfigUtils.java
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/utils/TableConfigUtils.java
index a7d65d6343..e8dfef485a 100644
---
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/utils/TableConfigUtils.java
+++
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/utils/TableConfigUtils.java
@@ -649,6 +649,8 @@ public final class TableConfigUtils {
Preconditions.checkState(
tableConfig.getRoutingConfig() != null &&
isRoutingStrategyAllowedForUpsert(tableConfig.getRoutingConfig()),
"Upsert/Dedup table must use strict replica-group (i.e.
strictReplicaGroup) based routing");
+
Preconditions.checkState(tableConfig.getTenantConfig().getTagOverrideConfig()
== null,
+ "Upsert/Dedup table cannot use tenant tag override");
// specifically for upsert
UpsertConfig upsertConfig = tableConfig.getUpsertConfig();
diff --git
a/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/utils/TableConfigUtilsTest.java
b/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/utils/TableConfigUtilsTest.java
index 685b4d7963..c68b77c553 100644
---
a/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/utils/TableConfigUtilsTest.java
+++
b/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/utils/TableConfigUtilsTest.java
@@ -39,6 +39,7 @@ import org.apache.pinot.spi.config.table.StarTreeIndexConfig;
import org.apache.pinot.spi.config.table.TableConfig;
import org.apache.pinot.spi.config.table.TableTaskConfig;
import org.apache.pinot.spi.config.table.TableType;
+import org.apache.pinot.spi.config.table.TagOverrideConfig;
import org.apache.pinot.spi.config.table.TierConfig;
import org.apache.pinot.spi.config.table.UpsertConfig;
import org.apache.pinot.spi.config.table.assignment.InstanceAssignmentConfig;
@@ -1522,6 +1523,18 @@ public class TableConfigUtilsTest {
"Upsert/Dedup table must use strict replica-group (i.e.
strictReplicaGroup) based routing");
}
+ // invalid tag override with upsert
+ tableConfig = new
TableConfigBuilder(TableType.REALTIME).setTableName(TABLE_NAME).setTimeColumnName(TIME_COLUMN)
+ .setUpsertConfig(new
UpsertConfig(UpsertConfig.Mode.FULL)).setStreamConfigs(getStreamConfigs())
+ .setRoutingConfig(new RoutingConfig(null, null,
RoutingConfig.STRICT_REPLICA_GROUP_INSTANCE_SELECTOR_TYPE))
+ .setTagOverrideConfig(new TagOverrideConfig("T1_REALTIME",
"T2_REALTIME")).build();
+ try {
+ TableConfigUtils.validateUpsertAndDedupConfig(tableConfig, schema);
+ Assert.fail("Tag override must not be allowed with upsert");
+ } catch (IllegalStateException e) {
+ Assert.assertEquals(e.getMessage(), "Upsert/Dedup table cannot use
tenant tag override");
+ }
+
tableConfig = new
TableConfigBuilder(TableType.REALTIME).setTableName(TABLE_NAME).setUpsertConfig(upsertConfig)
.setRoutingConfig(new RoutingConfig(null, null,
RoutingConfig.STRICT_REPLICA_GROUP_INSTANCE_SELECTOR_TYPE))
.setStreamConfigs(streamConfigs).build();
@@ -1752,6 +1765,7 @@ public class TableConfigUtilsTest {
} catch (IllegalStateException e) {
Assert.assertTrue(e.getMessage().contains("RealtimeToOfflineTask doesn't
support upsert table"));
}
+
// validate that TASK config will be skipped with skip string.
TableConfigUtils.validate(tableConfig, schema, "TASK,UPSERT", false);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]