This is an automated email from the ASF dual-hosted git repository. dataroaring pushed a commit to branch branch-4.0-preview in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-4.0-preview by this push: new 265799b47c9 Revert "(cloud-merge) Fix the cast failed when RollupJobV2 convert to CloudRollupJobV2 (#33847)" 265799b47c9 is described below commit 265799b47c9c7b099de943cb185a81c1d6669a82 Author: Yongqiang YANG <dataroar...@gmail.com> AuthorDate: Mon Apr 22 20:40:22 2024 +0800 Revert "(cloud-merge) Fix the cast failed when RollupJobV2 convert to CloudRollupJobV2 (#33847)" This reverts commit 799077eec55f24277ba9819f0aaa09f58d9783f5. --- .../org/apache/doris/alter/AlterJobV2Factory.java | 3 +- .../org/apache/doris/alter/CloudRollupJobV2.java | 32 ++++++++----------- .../apache/doris/alter/CloudSchemaChangeJobV2.java | 36 ++++++++++------------ 3 files changed, 31 insertions(+), 40 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/alter/AlterJobV2Factory.java b/fe/fe-core/src/main/java/org/apache/doris/alter/AlterJobV2Factory.java index ef3c41d0aa1..d5c937fd181 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/alter/AlterJobV2Factory.java +++ b/fe/fe-core/src/main/java/org/apache/doris/alter/AlterJobV2Factory.java @@ -26,6 +26,7 @@ import org.apache.doris.qe.OriginStatement; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import java.io.IOException; import java.util.List; public class AlterJobV2Factory { @@ -68,7 +69,7 @@ public class AlterJobV2Factory { } } return job; - } catch (IllegalAccessException e) { + } catch (IOException e) { throw new AnalysisException(e.getMessage()); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/alter/CloudRollupJobV2.java b/fe/fe-core/src/main/java/org/apache/doris/alter/CloudRollupJobV2.java index 51c4abde769..4bc34582fff 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/alter/CloudRollupJobV2.java +++ b/fe/fe-core/src/main/java/org/apache/doris/alter/CloudRollupJobV2.java @@ -41,35 +41,29 @@ import org.apache.doris.thrift.TTabletType; import org.apache.doris.thrift.TTaskType; import com.google.common.base.Preconditions; -import com.google.gson.annotations.SerializedName; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import java.lang.annotation.Annotation; -import java.lang.reflect.Field; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Map; public class CloudRollupJobV2 extends RollupJobV2 { private static final Logger LOG = LogManager.getLogger(CloudRollupJobV2.class); - public static AlterJobV2 buildCloudRollupJobV2(RollupJobV2 job) throws IllegalAccessException { - CloudRollupJobV2 ret = new CloudRollupJobV2(); - List<Field> allFields = new ArrayList<>(); - Class tmpClass = RollupJobV2.class; - while (tmpClass != null) { - allFields.addAll(Arrays.asList(tmpClass.getDeclaredFields())); - tmpClass = tmpClass.getSuperclass(); - } - for (Field field : allFields) { - field.setAccessible(true); - Annotation annotation = field.getAnnotation(SerializedName.class); - if (annotation != null) { - field.set(ret, field.get(job)); - } - } + public static AlterJobV2 buildCloudRollupJobV2(RollupJobV2 job) throws IOException { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + DataOutputStream dos = new DataOutputStream(baos); + job.write(dos); + ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); + DataInputStream dis = new DataInputStream(bais); + CloudRollupJobV2 ret = (CloudRollupJobV2) CloudRollupJobV2.read(dis); + ret.partitionIdToRollupIndex = job.partitionIdToRollupIndex; return ret; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/alter/CloudSchemaChangeJobV2.java b/fe/fe-core/src/main/java/org/apache/doris/alter/CloudSchemaChangeJobV2.java index 22ef8c0d619..cdfcf0a5e20 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/alter/CloudSchemaChangeJobV2.java +++ b/fe/fe-core/src/main/java/org/apache/doris/alter/CloudSchemaChangeJobV2.java @@ -39,14 +39,14 @@ import org.apache.doris.task.AgentTaskQueue; import org.apache.doris.thrift.TTaskType; import com.google.common.base.Preconditions; -import com.google.gson.annotations.SerializedName; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import java.lang.annotation.Annotation; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.Arrays; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -54,21 +54,17 @@ import java.util.stream.Collectors; public class CloudSchemaChangeJobV2 extends SchemaChangeJobV2 { private static final Logger LOG = LogManager.getLogger(SchemaChangeJobV2.class); - public static AlterJobV2 buildCloudSchemaChangeJobV2(SchemaChangeJobV2 job) throws IllegalAccessException { - CloudSchemaChangeJobV2 ret = new CloudSchemaChangeJobV2(); - List<Field> allFields = new ArrayList<>(); - Class tmpClass = SchemaChangeJobV2.class; - while (tmpClass != null) { - allFields.addAll(Arrays.asList(tmpClass.getDeclaredFields())); - tmpClass = tmpClass.getSuperclass(); - } - for (Field field : allFields) { - field.setAccessible(true); - Annotation annotation = field.getAnnotation(SerializedName.class); - if (annotation != null) { - field.set(ret, field.get(job)); - } - } + public static AlterJobV2 buildCloudSchemaChangeJobV2(SchemaChangeJobV2 job) throws IOException { + // deep copy to save repeated assignments + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + DataOutputStream dos = new DataOutputStream(baos); + job.write(dos); + ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); + DataInputStream dis = new DataInputStream(bais); + // partitionIndexMap cannot be deep-copied because it is referenced + // by `SchemaChangeJobV2#addShadowIndexToCatalog` and `SchemaChangeHandler.createJob` + CloudSchemaChangeJobV2 ret = (CloudSchemaChangeJobV2) CloudSchemaChangeJobV2.read(dis); + ret.partitionIndexMap = job.partitionIndexMap; return ret; } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org