[fix](Nereids) Fix add BE with properties return UnsupportedOperationException err (#50163) …Exception err due to https://github.com/apache/doris/pull/47951 sql `ALTER SYSTEM ADD BACKEND "175.42.51.1:9050" PROPERTIES ("tag.compute_group_name" = "another_compute_group");` ``` Caused by: java.lang.UnsupportedOperationException at com.google.common.collect.UnmodifiableIterator.remove(UnmodifiableIterator.java:50) ~[guava-33.2.1-jre.jar:?] at org.apache.doris.common.util.PropertyAnalyzer.analyzeBackendTagsProperties(PropertyAnalyzer.java:1350) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.nereids.trees.plans.commands.info.AddBackendOp.validate(AddBackendOp.java:45) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.nereids.trees.plans.commands.AlterSystemCommand.validate(AlterSystemCommand.java:90) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.nereids.trees.plans.commands.AlterSystemCommand.doRun(AlterSystemCommand.java:95) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.nereids.trees.plans.commands.AlterCommand.run(AlterCommand.java:40) ~[doris-fe.jar:1.2-SNAPSHOT] at org.apache.doris.qe.StmtExecutor.executeByNereids(StmtExecutor.java:769) ~[doris-fe.jar:1.2-SNAPSHOT] ```
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/AddBackendOp.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/AddBackendOp.java index 8141272..43f0aed 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/AddBackendOp.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/AddBackendOp.java
@@ -23,6 +23,7 @@ import org.apache.doris.qe.ConnectContext; import org.apache.doris.resource.Tag; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -36,7 +37,7 @@ public AddBackendOp(List<String> hostPorts, Map<String, String> properties) { super(hostPorts); - this.properties = properties; + this.properties = new HashMap<>(properties); } @Override
diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/commands/AlterSystemCommandTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/commands/AlterSystemCommandTest.java index e76b279..77af57e 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/commands/AlterSystemCommandTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/plans/commands/AlterSystemCommandTest.java
@@ -87,6 +87,12 @@ Assertions.assertThrows(AnalysisException.class, () -> addBackend2.validate(connectContext), "Encounter unknown exception: errCode = 2, detailMessage = Port is out of range: 89050"); + Map<String, String> properties = ImmutableMap.of("tag.compute_group_name", "another_compute_group", + "tag.location", "location"); + AlterSystemCommand addBackend3 = new AlterSystemCommand( + new AddBackendOp(hostPorts, properties), PlanType.ALTER_SYSTEM_ADD_BACKEND); + Assertions.assertDoesNotThrow(() -> addBackend3.validate(connectContext)); + // test dropBackend AlterSystemCommand dropBackend = new AlterSystemCommand( new DropBackendOp(hostPorts, false), PlanType.ALTER_SYSTEM_DROP_BACKEND);