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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]