You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by zh...@apache.org on 2019/12/06 13:46:27 UTC

[incubator-doris] branch master updated: Remove the readFields() method in Writable interface (#2394)

This is an automated email from the ASF dual-hosted git repository.

zhaoc pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 55d64e3  Remove the readFields() method in Writable interface (#2394)
55d64e3 is described below

commit 55d64e3be8430f26db3c048bb7f05de1a6fc4b42
Author: Mingyu Chen <mo...@163.com>
AuthorDate: Fri Dec 6 21:46:21 2019 +0800

    Remove the readFields() method in Writable interface (#2394)
    
    All classes that implement the Wriable interface need only implement the write() method.
    The read() method should be implemented by itself according to the situation of different
    classes.
---
 .../main/java/org/apache/doris/alter/AlterJob.java |   1 -
 .../java/org/apache/doris/alter/AlterJobV2.java    |   1 -
 .../apache/doris/alter/DecommissionBackendJob.java |   1 -
 .../java/org/apache/doris/alter/RollupJob.java     |   1 -
 .../java/org/apache/doris/alter/RollupJobV2.java   |   1 -
 .../org/apache/doris/alter/SchemaChangeJob.java    |   1 -
 .../org/apache/doris/alter/SchemaChangeJobV2.java  |   1 -
 .../org/apache/doris/analysis/BinaryPredicate.java |   1 -
 .../org/apache/doris/analysis/BoolLiteral.java     |   1 -
 .../java/org/apache/doris/analysis/BrokerDesc.java |   1 -
 .../org/apache/doris/analysis/ClusterName.java     |   1 -
 .../org/apache/doris/analysis/DateLiteral.java     |   1 -
 .../org/apache/doris/analysis/DecimalLiteral.java  |   1 -
 .../apache/doris/analysis/DistributionDesc.java    |   1 -
 .../main/java/org/apache/doris/analysis/Expr.java  |   1 -
 .../org/apache/doris/analysis/FloatLiteral.java    |   1 -
 .../apache/doris/analysis/FunctionCallExpr.java    |   1 -
 .../org/apache/doris/analysis/FunctionName.java    |   1 -
 .../org/apache/doris/analysis/FunctionParams.java  |   1 -
 .../doris/analysis/HashDistributionDesc.java       |   1 -
 .../java/org/apache/doris/analysis/IntLiteral.java |   1 -
 .../java/org/apache/doris/analysis/KeysDesc.java   |   1 -
 .../java/org/apache/doris/analysis/LabelName.java  |   1 -
 .../org/apache/doris/analysis/LargeIntLiteral.java |   1 -
 .../org/apache/doris/analysis/LiteralExpr.java     |   1 -
 .../java/org/apache/doris/analysis/MaxLiteral.java |   1 -
 .../org/apache/doris/analysis/NullLiteral.java     |   1 -
 .../doris/analysis/RandomDistributionDesc.java     |   1 -
 .../java/org/apache/doris/analysis/SlotRef.java    |   1 -
 .../org/apache/doris/analysis/StringLiteral.java   |   1 -
 .../java/org/apache/doris/analysis/TableName.java  |   1 -
 .../org/apache/doris/analysis/TablePattern.java    |   1 -
 .../java/org/apache/doris/analysis/TableRef.java   |   1 -
 .../org/apache/doris/analysis/UserIdentity.java    |   1 -
 .../java/org/apache/doris/backup/AbstractJob.java  |   1 -
 .../java/org/apache/doris/backup/BackupJob.java    |   1 -
 .../org/apache/doris/backup/BackupJobInfo.java     |   1 -
 .../java/org/apache/doris/backup/BackupMeta.java   |   1 -
 .../java/org/apache/doris/backup/BlobStorage.java  |   1 -
 .../org/apache/doris/backup/CommandBuilder.java    | 119 -----------
 .../java/org/apache/doris/backup/DirSaver.java     | 219 --------------------
 .../java/org/apache/doris/backup/FileSaverI.java   | 140 -------------
 .../java/org/apache/doris/backup/ObjectWriter.java | 164 ---------------
 .../java/org/apache/doris/backup/PathBuilder.java  | 192 -----------------
 .../java/org/apache/doris/backup/Repository.java   |   1 -
 .../org/apache/doris/backup/RepositoryMgr.java     |   1 -
 .../apache/doris/backup/RestoreFileMapping.java    |   2 -
 .../java/org/apache/doris/backup/RestoreJob.java   |   1 -
 .../org/apache/doris/backup/SaveManifestTask.java  | 227 ---------------------
 .../java/org/apache/doris/backup/SnapshotInfo.java |   1 -
 .../apache/doris/catalog/AggregateFunction.java    |   1 -
 .../apache/doris/catalog/AuthorizationInfo.java    |   1 -
 .../java/org/apache/doris/catalog/BrokerMgr.java   |   1 -
 .../java/org/apache/doris/catalog/BrokerTable.java |   1 -
 .../apache/doris/catalog/CatalogRecycleBin.java    |   4 -
 .../apache/doris/catalog/ColocateGroupSchema.java  |   1 -
 .../apache/doris/catalog/ColocateTableIndex.java   |   2 -
 .../main/java/org/apache/doris/catalog/Column.java |   1 -
 .../java/org/apache/doris/catalog/ColumnStats.java |   1 -
 .../org/apache/doris/catalog/DataProperty.java     |   1 -
 .../java/org/apache/doris/catalog/Database.java    |   1 -
 .../java/org/apache/doris/catalog/DiskInfo.java    |   1 -
 .../org/apache/doris/catalog/DistributionInfo.java |   1 -
 .../java/org/apache/doris/catalog/EsTable.java     |   1 -
 .../java/org/apache/doris/catalog/FsBroker.java    |   1 -
 .../java/org/apache/doris/catalog/Function.java    |   1 -
 .../apache/doris/catalog/FunctionSearchDesc.java   |   1 -
 .../apache/doris/catalog/HashDistributionInfo.java |   1 -
 .../org/apache/doris/catalog/InfoSchemaDb.java     |   1 -
 .../java/org/apache/doris/catalog/KuduTable.java   |   1 -
 .../apache/doris/catalog/MaterializedIndex.java    |   1 -
 .../java/org/apache/doris/catalog/MetaObject.java  |   1 -
 .../java/org/apache/doris/catalog/MysqlTable.java  |   1 -
 .../java/org/apache/doris/catalog/OlapTable.java   |   3 +-
 .../java/org/apache/doris/catalog/Partition.java   |   1 -
 .../org/apache/doris/catalog/PartitionInfo.java    |   1 -
 .../org/apache/doris/catalog/PartitionKey.java     |   1 -
 .../doris/catalog/RandomDistributionInfo.java      |   1 -
 .../apache/doris/catalog/RangePartitionInfo.java   |   1 -
 .../java/org/apache/doris/catalog/Replica.java     |   1 -
 .../org/apache/doris/catalog/ResourceGroup.java    |   1 -
 .../org/apache/doris/catalog/ScalarFunction.java   |   1 -
 .../java/org/apache/doris/catalog/SchemaTable.java |   1 -
 .../apache/doris/catalog/SinglePartitionInfo.java  |   1 -
 .../main/java/org/apache/doris/catalog/Table.java  |   1 -
 .../main/java/org/apache/doris/catalog/Tablet.java |   1 -
 .../main/java/org/apache/doris/catalog/View.java   |   1 -
 .../java/org/apache/doris/cluster/BaseParam.java   |   1 -
 .../java/org/apache/doris/cluster/Cluster.java     |   1 -
 .../java/org/apache/doris/common/io/DeepCopy.java  |  16 +-
 .../main/java/org/apache/doris/common/io/Text.java |   1 -
 .../java/org/apache/doris/common/io/Writable.java  |  77 +++----
 .../org/apache/doris/common/util/SmallFileMgr.java |   2 -
 .../main/java/org/apache/doris/ha/MasterInfo.java  |   1 -
 .../org/apache/doris/journal/JournalEntity.java    | 144 +++++++++----
 .../org/apache/doris/journal/bdbje/Timestamp.java  |   1 -
 .../java/org/apache/doris/load/AsyncDeleteJob.java |   1 -
 .../org/apache/doris/load/BrokerFileGroup.java     |   1 -
 .../org/apache/doris/load/BrokerLoadErrorHub.java  |   1 -
 .../java/org/apache/doris/load/DeleteInfo.java     |   1 -
 .../main/java/org/apache/doris/load/DppConfig.java |   1 -
 .../java/org/apache/doris/load/EtlJobInfo.java     |   1 -
 .../main/java/org/apache/doris/load/EtlStatus.java |   1 -
 .../java/org/apache/doris/load/ExportFailMsg.java  |   1 -
 .../main/java/org/apache/doris/load/ExportJob.java |   2 -
 .../main/java/org/apache/doris/load/FailMsg.java   |   1 -
 .../org/apache/doris/load/HadoopEtlJobInfo.java    |   1 -
 .../java/org/apache/doris/load/LoadErrorHub.java   |   1 -
 .../main/java/org/apache/doris/load/LoadJob.java   |   1 -
 .../java/org/apache/doris/load/MiniEtlJobInfo.java |   1 -
 .../org/apache/doris/load/MiniEtlTaskInfo.java     |   1 -
 .../org/apache/doris/load/MysqlLoadErrorHub.java   |   1 -
 .../org/apache/doris/load/PartitionLoadInfo.java   |   1 -
 .../org/apache/doris/load/PullLoadSourceInfo.java  |   1 -
 fe/src/main/java/org/apache/doris/load/Source.java |   1 -
 .../java/org/apache/doris/load/TableLoadInfo.java  |   1 -
 .../java/org/apache/doris/load/TabletLoadInfo.java |   1 -
 .../apache/doris/load/loadv2/BrokerLoadJob.java    |   1 -
 .../apache/doris/load/loadv2/InsertLoadJob.java    |   1 -
 .../java/org/apache/doris/load/loadv2/LoadJob.java |   1 -
 .../doris/load/loadv2/LoadJobFinalOperation.java   |   1 -
 .../org/apache/doris/load/loadv2/LoadManager.java  |   1 -
 .../org/apache/doris/load/loadv2/MiniLoadJob.java  |   1 -
 .../load/loadv2/MiniLoadTxnCommitAttachment.java   |   1 -
 .../doris/load/routineload/KafkaProgress.java      |   1 -
 .../load/routineload/KafkaRoutineLoadJob.java      |   1 -
 .../routineload/RLTaskTxnCommitAttachment.java     |   1 -
 .../doris/load/routineload/RoutineLoadJob.java     |   1 -
 .../doris/load/routineload/RoutineLoadManager.java |   1 -
 .../load/routineload/RoutineLoadProgress.java      |   1 -
 .../apache/doris/mysql/privilege/DbPrivEntry.java  |   1 -
 .../doris/mysql/privilege/GlobalPrivEntry.java     |   1 -
 .../org/apache/doris/mysql/privilege/PaloAuth.java |   1 -
 .../org/apache/doris/mysql/privilege/PaloRole.java |   1 -
 .../apache/doris/mysql/privilege/PrivBitSet.java   |   1 -
 .../apache/doris/mysql/privilege/PrivEntry.java    |   1 -
 .../apache/doris/mysql/privilege/PrivTable.java    |   1 -
 .../apache/doris/mysql/privilege/RoleManager.java  |   1 -
 .../doris/mysql/privilege/TablePrivEntry.java      |   1 -
 .../apache/doris/mysql/privilege/UserProperty.java |   1 -
 .../doris/mysql/privilege/UserPropertyInfo.java    |   1 -
 .../doris/mysql/privilege/UserPropertyMgr.java     |   1 -
 .../apache/doris/mysql/privilege/UserResource.java |   1 -
 .../apache/doris/mysql/privilege/WhiteList.java    |   1 -
 .../apache/doris/persist/BackendIdsUpdateInfo.java |   1 -
 .../apache/doris/persist/BackendTabletsInfo.java   |   1 -
 .../java/org/apache/doris/persist/CloneInfo.java   |   1 -
 .../java/org/apache/doris/persist/ClusterInfo.java |   1 -
 .../apache/doris/persist/ColocatePersistInfo.java  |   1 -
 .../apache/doris/persist/ConsistencyCheckInfo.java |   1 -
 .../org/apache/doris/persist/CreateTableInfo.java  |   1 -
 .../org/apache/doris/persist/DatabaseInfo.java     |   1 -
 .../java/org/apache/doris/persist/DropInfo.java    |   1 -
 .../doris/persist/DropLinkDbAndUpdateDbInfo.java   |   1 -
 .../apache/doris/persist/DropPartitionInfo.java    |   1 -
 .../java/org/apache/doris/persist/HbPackage.java   |   1 -
 .../java/org/apache/doris/persist/LinkDbInfo.java  |   1 -
 .../apache/doris/persist/ModifyPartitionInfo.java  |   1 -
 .../apache/doris/persist/PartitionPersistInfo.java |   1 -
 .../java/org/apache/doris/persist/PrivInfo.java    |   1 -
 .../java/org/apache/doris/persist/RecoverInfo.java |   1 -
 .../apache/doris/persist/ReplicaPersistInfo.java   |   1 -
 .../apache/doris/persist/RoutineLoadOperation.java |   1 -
 .../java/org/apache/doris/persist/TableInfo.java   |   1 -
 .../apache/doris/persist/TablePropertyInfo.java    |   1 -
 .../apache/doris/persist/TruncateTableInfo.java    |   1 -
 .../java/org/apache/doris/qe/SessionVariable.java  |   1 -
 .../main/java/org/apache/doris/system/Backend.java |   1 -
 .../org/apache/doris/system/BackendHbResponse.java |   1 -
 .../org/apache/doris/system/BrokerHbResponse.java  |   1 -
 .../java/org/apache/doris/system/Frontend.java     |   1 -
 .../apache/doris/system/FrontendHbResponse.java    |   1 -
 .../org/apache/doris/system/HeartbeatResponse.java |   1 -
 .../doris/transaction/GlobalTransactionMgr.java    |   1 -
 .../doris/transaction/PartitionCommitInfo.java     |   1 -
 .../apache/doris/transaction/TableCommitInfo.java  |   1 -
 .../apache/doris/transaction/TabletCommitInfo.java |   1 -
 .../doris/transaction/TransactionIdGenerator.java  |   1 -
 .../apache/doris/transaction/TransactionState.java |   1 -
 .../doris/transaction/TxnCommitAttachment.java     |   1 -
 .../org/apache/doris/backup/FileSaverITest.java    | 120 -----------
 .../org/apache/doris/common/io/DeepCopyTest.java}  |  35 ++--
 182 files changed, 166 insertions(+), 1467 deletions(-)

diff --git a/fe/src/main/java/org/apache/doris/alter/AlterJob.java b/fe/src/main/java/org/apache/doris/alter/AlterJob.java
index 3a9992b..d477aa2 100644
--- a/fe/src/main/java/org/apache/doris/alter/AlterJob.java
+++ b/fe/src/main/java/org/apache/doris/alter/AlterJob.java
@@ -295,7 +295,6 @@ public abstract class AlterJob implements Writable {
         }
     }
     
-    @Override
     public synchronized void readFields(DataInput in) throws IOException {
         // read common members as write in AlterJob.write().
         // except 'type' member, which is read in AlterJob.read()
diff --git a/fe/src/main/java/org/apache/doris/alter/AlterJobV2.java b/fe/src/main/java/org/apache/doris/alter/AlterJobV2.java
index 99371f5..709c040 100644
--- a/fe/src/main/java/org/apache/doris/alter/AlterJobV2.java
+++ b/fe/src/main/java/org/apache/doris/alter/AlterJobV2.java
@@ -197,7 +197,6 @@ public abstract class AlterJobV2 implements Writable {
         out.writeLong(timeoutMs);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         // read common members as write in AlterJobV2.write().
         // except 'type' member, which is read in AlterJobV2.read()
diff --git a/fe/src/main/java/org/apache/doris/alter/DecommissionBackendJob.java b/fe/src/main/java/org/apache/doris/alter/DecommissionBackendJob.java
index 5357ef8..0aae302 100644
--- a/fe/src/main/java/org/apache/doris/alter/DecommissionBackendJob.java
+++ b/fe/src/main/java/org/apache/doris/alter/DecommissionBackendJob.java
@@ -298,7 +298,6 @@ public class DecommissionBackendJob extends AlterJob {
      * @param in
      * @throws IOException
      */
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
 
diff --git a/fe/src/main/java/org/apache/doris/alter/RollupJob.java b/fe/src/main/java/org/apache/doris/alter/RollupJob.java
index 9b296e8..1bbe5e8 100644
--- a/fe/src/main/java/org/apache/doris/alter/RollupJob.java
+++ b/fe/src/main/java/org/apache/doris/alter/RollupJob.java
@@ -1070,7 +1070,6 @@ public class RollupJob extends AlterJob {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
 
diff --git a/fe/src/main/java/org/apache/doris/alter/RollupJobV2.java b/fe/src/main/java/org/apache/doris/alter/RollupJobV2.java
index a59cff5..1034915 100644
--- a/fe/src/main/java/org/apache/doris/alter/RollupJobV2.java
+++ b/fe/src/main/java/org/apache/doris/alter/RollupJobV2.java
@@ -530,7 +530,6 @@ public class RollupJobV2 extends AlterJobV2 {
         out.writeLong(watershedTxnId);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
 
diff --git a/fe/src/main/java/org/apache/doris/alter/SchemaChangeJob.java b/fe/src/main/java/org/apache/doris/alter/SchemaChangeJob.java
index 03bd751..d52ad61 100644
--- a/fe/src/main/java/org/apache/doris/alter/SchemaChangeJob.java
+++ b/fe/src/main/java/org/apache/doris/alter/SchemaChangeJob.java
@@ -1270,7 +1270,6 @@ public class SchemaChangeJob extends AlterJob {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
 
diff --git a/fe/src/main/java/org/apache/doris/alter/SchemaChangeJobV2.java b/fe/src/main/java/org/apache/doris/alter/SchemaChangeJobV2.java
index 0c929bc..f50232c 100644
--- a/fe/src/main/java/org/apache/doris/alter/SchemaChangeJobV2.java
+++ b/fe/src/main/java/org/apache/doris/alter/SchemaChangeJobV2.java
@@ -824,7 +824,6 @@ public class SchemaChangeJobV2 extends AlterJobV2 {
         out.writeLong(watershedTxnId);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
 
diff --git a/fe/src/main/java/org/apache/doris/analysis/BinaryPredicate.java b/fe/src/main/java/org/apache/doris/analysis/BinaryPredicate.java
index 34897aa..f3ae792 100644
--- a/fe/src/main/java/org/apache/doris/analysis/BinaryPredicate.java
+++ b/fe/src/main/java/org/apache/doris/analysis/BinaryPredicate.java
@@ -481,7 +481,6 @@ public class BinaryPredicate extends Predicate implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         int isWritable = in.readInt();
         if (isWritable == 0) {
diff --git a/fe/src/main/java/org/apache/doris/analysis/BoolLiteral.java b/fe/src/main/java/org/apache/doris/analysis/BoolLiteral.java
index f411ee4..e4c46cf 100644
--- a/fe/src/main/java/org/apache/doris/analysis/BoolLiteral.java
+++ b/fe/src/main/java/org/apache/doris/analysis/BoolLiteral.java
@@ -108,7 +108,6 @@ public class BoolLiteral extends LiteralExpr {
         out.writeBoolean(value);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
         value = in.readBoolean();
diff --git a/fe/src/main/java/org/apache/doris/analysis/BrokerDesc.java b/fe/src/main/java/org/apache/doris/analysis/BrokerDesc.java
index eac57dc..a098ca6 100644
--- a/fe/src/main/java/org/apache/doris/analysis/BrokerDesc.java
+++ b/fe/src/main/java/org/apache/doris/analysis/BrokerDesc.java
@@ -62,7 +62,6 @@ public class BrokerDesc implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         name = Text.readString(in);
         int size = in.readInt();
diff --git a/fe/src/main/java/org/apache/doris/analysis/ClusterName.java b/fe/src/main/java/org/apache/doris/analysis/ClusterName.java
index f3e8a30..3dd05a5 100644
--- a/fe/src/main/java/org/apache/doris/analysis/ClusterName.java
+++ b/fe/src/main/java/org/apache/doris/analysis/ClusterName.java
@@ -62,7 +62,6 @@ public class ClusterName implements Writable {
         Text.writeString(out, db);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         cluster = Text.readString(in);
         db = Text.readString(in);
diff --git a/fe/src/main/java/org/apache/doris/analysis/DateLiteral.java b/fe/src/main/java/org/apache/doris/analysis/DateLiteral.java
index 7042ad8..a076161 100644
--- a/fe/src/main/java/org/apache/doris/analysis/DateLiteral.java
+++ b/fe/src/main/java/org/apache/doris/analysis/DateLiteral.java
@@ -377,7 +377,6 @@ public class DateLiteral extends LiteralExpr {
         this.type = Type.DATETIME;
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
         if (Catalog.getCurrentCatalogJournalVersion() >= FeMetaVersion.VERSION_60) {
diff --git a/fe/src/main/java/org/apache/doris/analysis/DecimalLiteral.java b/fe/src/main/java/org/apache/doris/analysis/DecimalLiteral.java
index 77373a9..7b63340 100644
--- a/fe/src/main/java/org/apache/doris/analysis/DecimalLiteral.java
+++ b/fe/src/main/java/org/apache/doris/analysis/DecimalLiteral.java
@@ -199,7 +199,6 @@ public class DecimalLiteral extends LiteralExpr {
         Text.writeString(out, value.toString());
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
         value = new BigDecimal(Text.readString(in));
diff --git a/fe/src/main/java/org/apache/doris/analysis/DistributionDesc.java b/fe/src/main/java/org/apache/doris/analysis/DistributionDesc.java
index 6535515..441976a 100644
--- a/fe/src/main/java/org/apache/doris/analysis/DistributionDesc.java
+++ b/fe/src/main/java/org/apache/doris/analysis/DistributionDesc.java
@@ -72,7 +72,6 @@ public class DistributionDesc implements Writable {
         Text.writeString(out, type.name());
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         throw new NotImplementedException();
     }
diff --git a/fe/src/main/java/org/apache/doris/analysis/Expr.java b/fe/src/main/java/org/apache/doris/analysis/Expr.java
index c89f447..e787088 100644
--- a/fe/src/main/java/org/apache/doris/analysis/Expr.java
+++ b/fe/src/main/java/org/apache/doris/analysis/Expr.java
@@ -1448,7 +1448,6 @@ abstract public class Expr extends TreeNode<Expr> implements ParseNode, Cloneabl
         throw new IOException("Not implemented serializable ");
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         throw new IOException("Not implemented serializable ");
     }
diff --git a/fe/src/main/java/org/apache/doris/analysis/FloatLiteral.java b/fe/src/main/java/org/apache/doris/analysis/FloatLiteral.java
index 6f9d35b..239f597 100644
--- a/fe/src/main/java/org/apache/doris/analysis/FloatLiteral.java
+++ b/fe/src/main/java/org/apache/doris/analysis/FloatLiteral.java
@@ -176,7 +176,6 @@ public class FloatLiteral extends LiteralExpr {
         out.writeDouble(value);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
         value = in.readDouble();
diff --git a/fe/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java b/fe/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java
index 4455dfc..738f575 100644
--- a/fe/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java
+++ b/fe/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java
@@ -684,7 +684,6 @@ public class FunctionCallExpr extends Expr {
         out.writeBoolean(isMergeAggFn);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         fnName = FunctionName.read(in);
         fnParams = FunctionParams.read(in);
diff --git a/fe/src/main/java/org/apache/doris/analysis/FunctionName.java b/fe/src/main/java/org/apache/doris/analysis/FunctionName.java
index bafc853..40a47cb 100644
--- a/fe/src/main/java/org/apache/doris/analysis/FunctionName.java
+++ b/fe/src/main/java/org/apache/doris/analysis/FunctionName.java
@@ -191,7 +191,6 @@ public class FunctionName implements Writable {
         Text.writeString(out, fn_);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         if (in.readBoolean()) {
             db_ = Text.readString(in);
diff --git a/fe/src/main/java/org/apache/doris/analysis/FunctionParams.java b/fe/src/main/java/org/apache/doris/analysis/FunctionParams.java
index 7b6f564..4c3d9a7 100644
--- a/fe/src/main/java/org/apache/doris/analysis/FunctionParams.java
+++ b/fe/src/main/java/org/apache/doris/analysis/FunctionParams.java
@@ -89,7 +89,6 @@ public class FunctionParams implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         isStar = in.readBoolean();
         isDistinct = in.readBoolean();
diff --git a/fe/src/main/java/org/apache/doris/analysis/HashDistributionDesc.java b/fe/src/main/java/org/apache/doris/analysis/HashDistributionDesc.java
index c136df8..e779f20 100644
--- a/fe/src/main/java/org/apache/doris/analysis/HashDistributionDesc.java
+++ b/fe/src/main/java/org/apache/doris/analysis/HashDistributionDesc.java
@@ -132,7 +132,6 @@ public class HashDistributionDesc extends DistributionDesc {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         numBucket = in.readInt();
         int count = in.readInt();
diff --git a/fe/src/main/java/org/apache/doris/analysis/IntLiteral.java b/fe/src/main/java/org/apache/doris/analysis/IntLiteral.java
index 35a7d00..ea047f2 100644
--- a/fe/src/main/java/org/apache/doris/analysis/IntLiteral.java
+++ b/fe/src/main/java/org/apache/doris/analysis/IntLiteral.java
@@ -325,7 +325,6 @@ public class IntLiteral extends LiteralExpr {
         out.writeLong(value);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
         value = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/analysis/KeysDesc.java b/fe/src/main/java/org/apache/doris/analysis/KeysDesc.java
index 12d18f3..c7b4f23 100644
--- a/fe/src/main/java/org/apache/doris/analysis/KeysDesc.java
+++ b/fe/src/main/java/org/apache/doris/analysis/KeysDesc.java
@@ -127,7 +127,6 @@ public class KeysDesc implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         type = KeysType.valueOf(Text.readString(in));
 
diff --git a/fe/src/main/java/org/apache/doris/analysis/LabelName.java b/fe/src/main/java/org/apache/doris/analysis/LabelName.java
index 4e3cd8d..342c763 100644
--- a/fe/src/main/java/org/apache/doris/analysis/LabelName.java
+++ b/fe/src/main/java/org/apache/doris/analysis/LabelName.java
@@ -103,7 +103,6 @@ public class LabelName implements Writable {
         Text.writeString(out, labelName);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         if (Catalog.getCurrentCatalogJournalVersion() < FeMetaVersion.VERSION_30) {
             dbName = ClusterNamespace.getFullName(SystemInfoService.DEFAULT_CLUSTER, Text.readString(in));
diff --git a/fe/src/main/java/org/apache/doris/analysis/LargeIntLiteral.java b/fe/src/main/java/org/apache/doris/analysis/LargeIntLiteral.java
index d6dc148..5ecfe52 100644
--- a/fe/src/main/java/org/apache/doris/analysis/LargeIntLiteral.java
+++ b/fe/src/main/java/org/apache/doris/analysis/LargeIntLiteral.java
@@ -211,7 +211,6 @@ public class LargeIntLiteral extends LiteralExpr {
         Text.writeString(out, value.toString());
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
         value = new BigInteger(Text.readString(in));
diff --git a/fe/src/main/java/org/apache/doris/analysis/LiteralExpr.java b/fe/src/main/java/org/apache/doris/analysis/LiteralExpr.java
index 49a8e5e..c7e79f7 100644
--- a/fe/src/main/java/org/apache/doris/analysis/LiteralExpr.java
+++ b/fe/src/main/java/org/apache/doris/analysis/LiteralExpr.java
@@ -170,7 +170,6 @@ public abstract class LiteralExpr extends Expr {
     public void write(DataOutput out) throws IOException {
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
     }
     
diff --git a/fe/src/main/java/org/apache/doris/analysis/MaxLiteral.java b/fe/src/main/java/org/apache/doris/analysis/MaxLiteral.java
index 8eba747..783ad88 100644
--- a/fe/src/main/java/org/apache/doris/analysis/MaxLiteral.java
+++ b/fe/src/main/java/org/apache/doris/analysis/MaxLiteral.java
@@ -66,7 +66,6 @@ public final class MaxLiteral extends LiteralExpr {
     public void write(DataOutput out) throws IOException {
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
     }
 
diff --git a/fe/src/main/java/org/apache/doris/analysis/NullLiteral.java b/fe/src/main/java/org/apache/doris/analysis/NullLiteral.java
index ddf5818..2d937e0 100644
--- a/fe/src/main/java/org/apache/doris/analysis/NullLiteral.java
+++ b/fe/src/main/java/org/apache/doris/analysis/NullLiteral.java
@@ -134,7 +134,6 @@ public class NullLiteral extends LiteralExpr {
         super.write(out);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
     }
diff --git a/fe/src/main/java/org/apache/doris/analysis/RandomDistributionDesc.java b/fe/src/main/java/org/apache/doris/analysis/RandomDistributionDesc.java
index c88d7c4..9dd7475 100644
--- a/fe/src/main/java/org/apache/doris/analysis/RandomDistributionDesc.java
+++ b/fe/src/main/java/org/apache/doris/analysis/RandomDistributionDesc.java
@@ -67,7 +67,6 @@ public class RandomDistributionDesc extends DistributionDesc {
         out.writeInt(numBucket);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         numBucket = in.readInt();
     }
diff --git a/fe/src/main/java/org/apache/doris/analysis/SlotRef.java b/fe/src/main/java/org/apache/doris/analysis/SlotRef.java
index 7ad5395..4b3303c 100644
--- a/fe/src/main/java/org/apache/doris/analysis/SlotRef.java
+++ b/fe/src/main/java/org/apache/doris/analysis/SlotRef.java
@@ -284,7 +284,6 @@ public class SlotRef extends Expr {
         Text.writeString(out, col);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         if (in.readBoolean()) {
             tblName = new TableName();
diff --git a/fe/src/main/java/org/apache/doris/analysis/StringLiteral.java b/fe/src/main/java/org/apache/doris/analysis/StringLiteral.java
index 6912997..261f322 100644
--- a/fe/src/main/java/org/apache/doris/analysis/StringLiteral.java
+++ b/fe/src/main/java/org/apache/doris/analysis/StringLiteral.java
@@ -218,7 +218,6 @@ public class StringLiteral extends LiteralExpr {
         Text.writeString(out, value);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
         value = Text.readString(in);
diff --git a/fe/src/main/java/org/apache/doris/analysis/TableName.java b/fe/src/main/java/org/apache/doris/analysis/TableName.java
index 116a025..2e58107 100644
--- a/fe/src/main/java/org/apache/doris/analysis/TableName.java
+++ b/fe/src/main/java/org/apache/doris/analysis/TableName.java
@@ -133,7 +133,6 @@ public class TableName implements Writable {
         Text.writeString(out, tbl);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         db = Text.readString(in);
         tbl = Text.readString(in);
diff --git a/fe/src/main/java/org/apache/doris/analysis/TablePattern.java b/fe/src/main/java/org/apache/doris/analysis/TablePattern.java
index 2379e3d..855b2f7 100644
--- a/fe/src/main/java/org/apache/doris/analysis/TablePattern.java
+++ b/fe/src/main/java/org/apache/doris/analysis/TablePattern.java
@@ -134,7 +134,6 @@ public class TablePattern implements Writable {
         Text.writeString(out, tbl);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         db = Text.readString(in);
         tbl = Text.readString(in);
diff --git a/fe/src/main/java/org/apache/doris/analysis/TableRef.java b/fe/src/main/java/org/apache/doris/analysis/TableRef.java
index 52e11d0..e17fc17 100644
--- a/fe/src/main/java/org/apache/doris/analysis/TableRef.java
+++ b/fe/src/main/java/org/apache/doris/analysis/TableRef.java
@@ -707,7 +707,6 @@ public class TableRef implements ParseNode, Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         name = new TableName();
         name.readFields(in);
diff --git a/fe/src/main/java/org/apache/doris/analysis/UserIdentity.java b/fe/src/main/java/org/apache/doris/analysis/UserIdentity.java
index cc83a18..c42058e 100644
--- a/fe/src/main/java/org/apache/doris/analysis/UserIdentity.java
+++ b/fe/src/main/java/org/apache/doris/analysis/UserIdentity.java
@@ -216,7 +216,6 @@ public class UserIdentity implements Writable {
         out.writeBoolean(isDomain);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         user = Text.readString(in);
         host = Text.readString(in);
diff --git a/fe/src/main/java/org/apache/doris/backup/AbstractJob.java b/fe/src/main/java/org/apache/doris/backup/AbstractJob.java
index 849ebb8..07cbdc4 100644
--- a/fe/src/main/java/org/apache/doris/backup/AbstractJob.java
+++ b/fe/src/main/java/org/apache/doris/backup/AbstractJob.java
@@ -205,7 +205,6 @@ public abstract class AbstractJob implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         if (!isTypeRead) {
             type = JobType.valueOf(Text.readString(in));
diff --git a/fe/src/main/java/org/apache/doris/backup/BackupJob.java b/fe/src/main/java/org/apache/doris/backup/BackupJob.java
index 880c5da..eb7093a 100644
--- a/fe/src/main/java/org/apache/doris/backup/BackupJob.java
+++ b/fe/src/main/java/org/apache/doris/backup/BackupJob.java
@@ -798,7 +798,6 @@ public class BackupJob extends AbstractJob {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
 
diff --git a/fe/src/main/java/org/apache/doris/backup/BackupJobInfo.java b/fe/src/main/java/org/apache/doris/backup/BackupJobInfo.java
index 9f07fed..10acdd0 100644
--- a/fe/src/main/java/org/apache/doris/backup/BackupJobInfo.java
+++ b/fe/src/main/java/org/apache/doris/backup/BackupJobInfo.java
@@ -511,7 +511,6 @@ public class BackupJobInfo implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         String json = Text.readString(in);
         genFromJson(json, this);
diff --git a/fe/src/main/java/org/apache/doris/backup/BackupMeta.java b/fe/src/main/java/org/apache/doris/backup/BackupMeta.java
index 5511036..081fc00 100644
--- a/fe/src/main/java/org/apache/doris/backup/BackupMeta.java
+++ b/fe/src/main/java/org/apache/doris/backup/BackupMeta.java
@@ -110,7 +110,6 @@ public class BackupMeta implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         int size = in.readInt();
         for (int i = 0; i < size; i++) {
diff --git a/fe/src/main/java/org/apache/doris/backup/BlobStorage.java b/fe/src/main/java/org/apache/doris/backup/BlobStorage.java
index bda5c02..1378111 100644
--- a/fe/src/main/java/org/apache/doris/backup/BlobStorage.java
+++ b/fe/src/main/java/org/apache/doris/backup/BlobStorage.java
@@ -748,7 +748,6 @@ public class BlobStorage implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         brokerName = Text.readString(in);
 
diff --git a/fe/src/main/java/org/apache/doris/backup/CommandBuilder.java b/fe/src/main/java/org/apache/doris/backup/CommandBuilder.java
deleted file mode 100644
index 9bc1480..0000000
--- a/fe/src/main/java/org/apache/doris/backup/CommandBuilder.java
+++ /dev/null
@@ -1,119 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package org.apache.doris.backup;
-
-import org.apache.doris.common.Config;
-import org.apache.doris.common.io.Text;
-import org.apache.doris.common.io.Writable;
-
-import com.google.common.base.Joiner;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Maps;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.File;
-import java.io.IOException;
-import java.util.Map;
-
-public class CommandBuilder implements Writable {
-    private static final Logger LOG = LogManager.getLogger(CommandBuilder.class);
-    
-    private static final String DORIS_HOME = System.getenv("DORIS_HOME");
-    private static final String BACKUP_PLUGIN_CMD = DORIS_HOME + Config.backup_plugin_path;
-
-    private static final String ACTION_UPLOAD = "upload";
-    private static final String ACTION_DOWNLOAD = "download";
-    private static final String ACTION_REMOVE = "remove";
-
-    private String remotePropFilePath;
-    private Map<String, String> remoteProperties;
-
-    public CommandBuilder() {
-        remoteProperties = Maps.newHashMap();
-    }
-
-    private CommandBuilder(String remotePropFilePath, Map<String, String> remoteProperties) {
-        this.remotePropFilePath = remotePropFilePath;
-        this.remoteProperties = remoteProperties;
-    }
-
-    public static CommandBuilder create(String absolutePath, Map<String, String> remoteProperties) throws IOException {
-        Preconditions.checkArgument(!remoteProperties.isEmpty());
-        createJsonFile(absolutePath, remoteProperties);
-        return new CommandBuilder(absolutePath, remoteProperties);
-    }
-
-    public String uploadCmd(String label, String src, String dest) throws IOException {
-        checkAndRecreateProp();
-        String cmd = Joiner.on(" ").join(BACKUP_PLUGIN_CMD, label, ACTION_UPLOAD, src, dest, remotePropFilePath);
-        LOG.debug("build cmd: {}", cmd);
-        return cmd;
-    }
-
-    public String downloadCmd(String label, String local, String remote) throws IOException {
-        checkAndRecreateProp();
-        String cmd = Joiner.on(" ").join(BACKUP_PLUGIN_CMD, label, ACTION_DOWNLOAD, local, remote, remotePropFilePath);
-        LOG.debug("build cmd: {}", cmd);
-        return cmd;
-    }
-
-    public String removeFileCmd(String label, String file) throws IOException {
-        checkAndRecreateProp();
-        String cmd = Joiner.on(" ").join(BACKUP_PLUGIN_CMD, label, ACTION_REMOVE, file, remotePropFilePath);
-        LOG.debug("build cmd: {}", cmd);
-        return cmd;
-    }
-
-    private void checkAndRecreateProp() throws IOException {
-        File jsonFile = new File(remotePropFilePath);
-        if (!jsonFile.exists()) {
-            createJsonFile(remotePropFilePath, remoteProperties);
-        }
-    }
-
-    private static void createJsonFile(String remotePropFilePath, Map<String, String> remoteProperties)
-            throws IOException {
-        ObjectWriter.writeAsJson(remotePropFilePath, remoteProperties);
-    }
-
-    @Override
-    public void write(DataOutput out) throws IOException {
-        Text.writeString(out, remotePropFilePath);
-        int size = remoteProperties.size();
-        out.writeInt(size);
-        for (Map.Entry<String, String> entry : remoteProperties.entrySet()) {
-            Text.writeString(out, entry.getKey());
-            Text.writeString(out, entry.getValue());
-        }
-    }
-
-    @Override
-    public void readFields(DataInput in) throws IOException {
-        remotePropFilePath = Text.readString(in);
-        int size = in.readInt();
-        for (int i = 0; i < size; i++) {
-            String key = Text.readString(in);
-            String value = Text.readString(in);
-            remoteProperties.put(key, value);
-        }
-    }
-}
diff --git a/fe/src/main/java/org/apache/doris/backup/DirSaver.java b/fe/src/main/java/org/apache/doris/backup/DirSaver.java
deleted file mode 100644
index 30b6464..0000000
--- a/fe/src/main/java/org/apache/doris/backup/DirSaver.java
+++ /dev/null
@@ -1,219 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package org.apache.doris.backup;
-
-import org.apache.doris.common.io.Text;
-
-import com.google.common.base.Strings;
-import com.google.common.collect.Maps;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.Queue;
-
-public class DirSaver extends FileSaverI {
-    private Map<String, FileSaverI> children;
-
-    public DirSaver() {
-        children = Maps.newHashMap();
-    }
-
-    public DirSaver(String name) {
-        super(name);
-        children = Maps.newHashMap();
-    }
-
-    public static DirSaver createWithPath(String path) {
-        DirSaver current = null;
-        String[] nodes = path.split(PathBuilder.PATH_DELIMITER);
-        for (int i = 0; i < nodes.length; i++) {
-            if (Strings.isNullOrEmpty(nodes[i])) {
-                continue;
-            }
-            DirSaver ds = new DirSaver(nodes[i]);
-            if (current != null) {
-                current.addChild(ds);
-            }
-            current = ds;
-        }
-        return current;
-    }
-
-    public void addChild(FileSaverI child) {
-        if (!children.containsKey(child.name)) {
-            children.put(child.name, child);
-            child.setParent(this);
-        }
-    }
-
-    public FileSaverI delChild(String childName) {
-        FileSaverI child = children.remove(childName);
-        if (child != null) {
-            child.removeParent();
-        }
-        return child;
-    }
-
-    public FileSaverI getChild(String childName) {
-        if (children.containsKey(childName)) {
-            return children.get(childName);
-        }
-        return null;
-    }
-
-    public Collection<FileSaverI> getChildren() {
-        return this.children.values();
-    }
-
-    public Collection<String> getChildrenName() {
-        return this.children.keySet();
-    }
-
-    public FileSaver addFile(String relativePath) {
-        DirSaver current = this;
-        String[] nodes = relativePath.split(PathBuilder.PATH_DELIMITER);
-        for (int i = 0; i < nodes.length; i++) {
-            if (Strings.isNullOrEmpty(nodes[i])) {
-                continue;
-            }
-
-            if (i == nodes.length - 1) {
-                if (current.hasChild(nodes[i])) {
-                    if (current.getChild(nodes[i]) instanceof DirSaver) {
-                        return null;
-                    } else {
-                        return (FileSaver) current.getChild(nodes[i]);
-                    }
-                } else {
-                    FileSaver fs = new FileSaver(nodes[i]);
-                    current.addChild(fs);
-                    return (FileSaver) current.getChild(nodes[i]);
-                }
-            } else {
-                if (current.hasChild(nodes[i])) {
-                    if (current.getChild(nodes[i]) instanceof FileSaver) {
-                        return null;
-                    } else {
-                        current = (DirSaver) current.getChild(nodes[i]);
-                    }
-                } else {
-                    DirSaver ds = new DirSaver(nodes[i]);
-                    current.addChild(ds);
-                    current = (DirSaver) current.getChild(nodes[i]);
-                }
-            }
-        }
-        return null;
-    }
-
-    public DirSaver addDir(String relativePath) {
-        DirSaver current = this;
-        String[] nodes = relativePath.split(PathBuilder.PATH_DELIMITER);
-        for (int i = 0; i < nodes.length; i++) {
-            if (Strings.isNullOrEmpty(nodes[i])) {
-                continue;
-            }
-
-            DirSaver ds = new DirSaver(nodes[i]);
-            if (current != null) {
-                current.addChild(ds);
-            }
-            current = (DirSaver) current.getChild(nodes[i]);
-        }
-        return current;
-    }
-
-    public boolean contains(String path) {
-        String[] nodes = path.split(PathBuilder.PATH_DELIMITER);
-        FileSaverI current = this;
-        for (int i = 0; i < nodes.length; i++) {
-            if (!current.hasChild(nodes[i])) {
-                return false;
-            }
-            current = current.getChild(nodes[i]);
-        }
-        return true;
-    }
-
-    public static DirSaver read(DataInput in) throws IOException {
-        DirSaver dirSaver = new DirSaver();
-        dirSaver.readFields(in);
-        return dirSaver;
-    }
-
-    @Override
-    public boolean hasChild(String childName) {
-        return children.containsKey(childName);
-    }
-
-    @Override
-    public void write(DataOutput out) throws IOException {
-        out.writeShort(0);
-        Text.writeString(out, name);
-
-        // copy children
-        Map<String, FileSaverI> copiedChildren = Maps.newHashMap(children);
-
-        Queue<FileSaverI> queue = new LinkedList<FileSaverI>();
-        for (String childName : copiedChildren.keySet()) {
-            queue.add(delChild(childName));
-        }
-
-        while (!queue.isEmpty()) {
-            // -1: EOF; 0: dir; 1: file
-            FileSaverI node = queue.poll();
-            if (node instanceof DirSaver) {
-                out.writeShort(0);
-                DirSaver dir = (DirSaver) node;
-                for (FileSaverI fileSaverI : dir.getChildren()) {
-                    queue.add(fileSaverI);
-                }
-            } else {
-                out.writeShort(1);
-            }
-            Text.writeString(out, node.getFullPath());
-        }
-        out.writeShort(-1);
-
-        // restore children
-        for (FileSaverI child : copiedChildren.values()) {
-            addChild(child);
-        }
-    }
-
-    @Override
-    public void readFields(DataInput in) throws IOException {
-        in.readShort(); // skip start 0
-        this.name = Text.readString(in); // read dir name
-
-        short flag = -1;
-        while ((flag = in.readShort()) != -1) {
-            if (flag == 0) {
-                String name = Text.readString(in);
-                addDir(name);
-            } else {
-                String name = Text.readString(in);
-                addFile(name);
-            }
-        }
-    }
-}
diff --git a/fe/src/main/java/org/apache/doris/backup/FileSaverI.java b/fe/src/main/java/org/apache/doris/backup/FileSaverI.java
deleted file mode 100644
index 6c7938f..0000000
--- a/fe/src/main/java/org/apache/doris/backup/FileSaverI.java
+++ /dev/null
@@ -1,140 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package org.apache.doris.backup;
-
-import org.apache.doris.common.io.Writable;
-
-import org.apache.commons.lang.NotImplementedException;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-
-public class FileSaverI implements Writable {
-    protected String name;
-
-    protected DirSaver parent;
-
-    public FileSaverI() {
-
-    }
-
-    public FileSaverI(String name) {
-        this.name = name;
-        parent = null;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String newName) {
-        name = newName;
-    }
-
-    public void setParent(DirSaver parent) {
-        this.parent = parent;
-    }
-
-    public DirSaver getParent() {
-        return parent;
-    }
-
-    public FileSaverI getTopParent() {
-        if (parent == null) {
-            return this;
-        } else {
-            return parent.getTopParent();
-        }
-    }
-
-    public void removeParent() {
-        parent = null;
-    }
-
-    public FileSaverI getChild(String childName) {
-        return null;
-    }
-
-    public boolean hasChild(String childName) {
-        return false;
-    }
-
-    public String getFullPath() {
-        StringBuilder sb = new StringBuilder();
-        FileSaverI current = this;
-        if (this instanceof FileSaver) {
-            sb.insert(0, name);
-        } else {
-            sb.insert(0, name + PathBuilder.PATH_DELIMITER);
-        }
-        if (current.getParent() != null) {
-            DirSaver parent = current.getParent();
-            sb.insert(0, parent.getFullPath());
-        } else {
-            sb.insert(0, PathBuilder.PATH_DELIMITER);
-        }
-        return sb.toString();
-    }
-
-    public void print(String prefix) {
-        print(prefix, 0);
-    }
-
-    private void print(String prefix, int level) {
-        String pre = prefix;
-        for (int i = 0; i < level; i++) {
-            pre += prefix;
-        }
-        System.out.println(pre + name);
-        if (this instanceof DirSaver) {
-            DirSaver dirSaver = (DirSaver) this;
-            for (FileSaverI fileSaverI : dirSaver.getChildren()) {
-                fileSaverI.print(prefix, level + 1);
-            }
-        }
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (!(obj instanceof FileSaverI)) {
-            return false;
-        }
-        FileSaverI fileSaverI = (FileSaverI) obj;
-        if (!name.equals(fileSaverI.name)) {
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        return name.hashCode();
-    }
-
-    @Override
-    public void write(DataOutput out) throws IOException {
-        throw new NotImplementedException();
-    }
-
-    @Override
-    public void readFields(DataInput in) throws IOException {
-        throw new NotImplementedException();
-    }
-}
-
diff --git a/fe/src/main/java/org/apache/doris/backup/ObjectWriter.java b/fe/src/main/java/org/apache/doris/backup/ObjectWriter.java
deleted file mode 100644
index 0028e24..0000000
--- a/fe/src/main/java/org/apache/doris/backup/ObjectWriter.java
+++ /dev/null
@@ -1,164 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package org.apache.doris.backup;
-
-import org.apache.doris.analysis.CreateTableStmt;
-import org.apache.doris.common.io.Writable;
-import org.apache.doris.common.util.Util;
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-import com.google.gson.Gson;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.io.BufferedWriter;
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.List;
-
-public class ObjectWriter {
-    private static final Logger LOG = LogManager.getLogger(ObjectWriter.class);
-
-    public static void writeAsJson(String absolutePath, Object obj) throws IOException {
-        File jsonFile = new File(absolutePath);
-        deleteAndRecreate(jsonFile);
-
-        BufferedWriter bw = null;
-        try {
-            bw = new BufferedWriter(new FileWriter(jsonFile));
-            Gson gson = new Gson();
-            String jsonStr = gson.toJson(obj);
-            bw.write(jsonStr);
-            bw.flush();
-        } catch (IOException e) {
-            LOG.warn("create json file failed. " + absolutePath, e);
-            throw e;
-        } finally {
-            if (bw != null) {
-                try {
-                    bw.close();
-                } catch (IOException e) {
-                    LOG.warn("close buffered writer error", e);
-                    throw e;
-                }
-            }
-        }
-    }
-
-    public static void write(String absolutePath, List<? extends Writable> writables) throws IOException {
-        File file = new File(absolutePath);
-        deleteAndRecreate(file);
-
-        DataOutputStream out = new DataOutputStream(new FileOutputStream(file));
-        try {
-            int count = writables.size();
-            out.writeInt(count);
-            for (Writable writable : writables) {
-                writable.write(out);
-            }
-            out.flush();
-        } finally {
-            out.close();
-        }
-        
-        LOG.info("finish write file: {}", absolutePath);
-    }
-
-    public static void writeReadable(String absolutePath, List<String> readables) throws IOException {
-        File file = new File(absolutePath);
-        deleteAndRecreate(file);
-
-        FileWriter fw = null;
-        BufferedWriter bw = null;
-        
-        try {
-            fw = new FileWriter(file);
-            bw = new BufferedWriter(fw);
-            
-            for (String readable : readables) {
-                bw.write(readable);
-                bw.newLine();
-            }
-            
-            bw.flush();
-        } finally {
-            bw.close();
-            fw.close();
-        }
-        
-        LOG.info("finish write readable file: {}", absolutePath);
-    }
-
-    public static CreateTableStmt readCreateTableStmt(String filePath) throws IOException {
-        throw new RuntimeException("Don't support CreateTableStmt serialization anymore.");
-    }
-
-    public static DirSaver readManifest(String filePath) throws IOException {
-        List<DirSaver> stmts = null;
-        try {
-            stmts = read(filePath, DirSaver.class);
-        } catch (IOException e) {
-            LOG.warn("failed to read manifest: " + filePath, e);
-            throw e;
-        }
-        Preconditions.checkState(stmts.size() == 1);
-        return stmts.get(0);
-    }
-
-    private static <T extends Writable> List<T> read(String filePath, Class<T> c) throws IOException {
-        File file = new File(filePath);
-        DataInputStream in = new DataInputStream(new FileInputStream(file));
-        try {
-            int count = in.readInt();
-            List<T> res = Lists.newArrayList();
-            for (int i = 0; i < count; i++) {
-                T t = c.newInstance();
-                t.readFields(in);
-                res.add(t);
-            }
-            return res;
-        } catch (InstantiationException | IllegalAccessException e) {
-            throw new IOException("", e);
-        } finally {
-            in.close();
-        }
-    }
-
-    private static void deleteAndRecreate(File file) throws IOException {
-        // try delete
-        Util.deleteDirectory(file);
-
-        // make parent dir
-        File parentFile = file.getParentFile();
-        if (parentFile != null && !parentFile.exists()) {
-            parentFile.mkdirs();
-        }
-
-        // create new file
-        if (!file.exists()) {
-            file.createNewFile();
-        }
-    }
-}
diff --git a/fe/src/main/java/org/apache/doris/backup/PathBuilder.java b/fe/src/main/java/org/apache/doris/backup/PathBuilder.java
deleted file mode 100644
index 1007303..0000000
--- a/fe/src/main/java/org/apache/doris/backup/PathBuilder.java
+++ /dev/null
@@ -1,192 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package org.apache.doris.backup;
-
-import org.apache.doris.common.Config;
-import org.apache.doris.common.io.Text;
-import org.apache.doris.common.io.Writable;
-
-import com.google.common.base.Joiner;
-import com.google.common.base.Preconditions;
-import com.google.common.base.Strings;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.File;
-import java.io.IOException;
-import java.util.Collection;
-
-public class PathBuilder implements Writable {
-    private static final Logger LOG = LogManager.getLogger(PathBuilder.class);
-    
-    public static final String CREATE_TABLE_STMT_FILE = "create_table_stmt";
-    public static final String ADD_ROLLUP_STMT_FILE = "add_rollup_stmt";
-    public static final String ADD_PARTITION_STMT_FILE = "add_partition_stmt";
-
-    public static final String MANIFEST_NAME = "manifest";
-    public static final String READABLE_MANIFEST_NAME = "manifest.readable";
-    public static final String REMOTE_PROP_POSTFIX = ".remote.properties";
-
-    public static final String PATH_DELIMITER = "/";
-    public static final String BACKUP_DIR_NAME = "backup_obj";
-    public static final String BACKUP_DIR = Joiner.on(PATH_DELIMITER).join(Config.meta_dir, BACKUP_DIR_NAME + "/");
-
-    private DirSaver root;
-
-    public PathBuilder() {
-
-    }
-
-    private PathBuilder(String path) {
-        DirSaver backupDir = DirSaver.createWithPath(BACKUP_DIR);
-        this.root = backupDir.addDir(path);
-    }
-
-    public static PathBuilder createPathBuilder(String path) throws IOException {
-        String formattedPath = formatPath(path);
-        if (Strings.isNullOrEmpty(formattedPath)) {
-            throw new IOException("Invalid path: " + formattedPath);
-        }
-        PathBuilder pathBuilder = new PathBuilder(formattedPath);
-        File file = new File(pathBuilder.getRoot().getFullPath());
-        if (file.exists()) {
-            LOG.warn("path[{}] dir already exist", formattedPath);
-        }
-        return pathBuilder;
-    }
-
-    private static String formatPath(String path) {
-        String formattedPath = path.replaceAll(" ", "");
-        formattedPath = formattedPath.replaceAll("/+", "/");
-        return formattedPath;
-    }
-
-    public DirSaver getRoot() {
-        return root;
-    }
-
-    public void setRoot(DirSaver newRoot) {
-        DirSaver parent = root.getParent();
-        root = newRoot;
-        root.setParent(parent);
-    }
-
-    public FileSaver addFile(String path) {
-        return root.addFile(path);
-    }
-
-    public String createTableStmt(String dbName, String tableName) {
-        // root/dbName/tableName/create_table_stmt
-        FileSaver res = addFile(createPath(dbName, tableName, CREATE_TABLE_STMT_FILE));
-        String fileName = res.getFullPath();
-        LOG.debug("make path: {}", fileName);
-        return fileName;
-    }
-
-    public String addRollupStmt(String dbName, String tableName) {
-        // root/dbName/tableName/add_rollup_stmt
-        FileSaver res = addFile(createPath(dbName, tableName, ADD_ROLLUP_STMT_FILE));
-        String fileName = res.getFullPath();
-        LOG.debug("make path: {}", fileName);
-        return fileName;
-    }
-
-    public String addPartitionStmt(String dbName, String tableName, String partitionName) {
-        // root/dbName/tableName/partitionName/add_partition_stmt
-        FileSaver res = addFile(createPath(dbName, tableName, partitionName, ADD_PARTITION_STMT_FILE));
-        String fileName = res.getFullPath();
-        LOG.debug("make path: {}", fileName);
-        return fileName;
-    }
-
-    public String tabletRemotePath(String dbName, String tableName, String partitionName,
-                                   String indexName, Long tabletId, String remotePath, String label) {
-        // root/dbName/tableName/partitionName/indexName/tabletId
-        String path = createPath(dbName, tableName, partitionName, indexName, tabletId.toString());
-        FileSaver res = addFile(path);
-        String fileName = res.getFullPath();
-        LOG.debug("make path: {}", fileName);
-        return createPath(remotePath, label, path);
-    }
-
-    public String manifest() {
-        // root/manifest
-        FileSaver res = addFile(MANIFEST_NAME);
-        String fileName = res.getFullPath();
-        LOG.debug("make path: {}", fileName);
-        return fileName;
-    }
-
-    public String readableManifest() {
-        String fileName = createPath(root.getFullPath(), READABLE_MANIFEST_NAME);
-        LOG.debug("make path: {}", fileName);
-        return fileName;
-    }
-
-    public String remoteProperties() {
-        // root/label.remote_prop
-        FileSaver res = addFile(root.name + REMOTE_PROP_POSTFIX);
-        String fileName = res.getFullPath();
-        LOG.debug("make path: {}", fileName);
-        return fileName;
-    }
-
-    public static String createPath(String...nodes) {
-        String path = Joiner.on(PATH_DELIMITER).join(nodes);
-        return path;
-    }
-
-    @Override
-    public void write(DataOutput out) throws IOException {
-        DirSaver parent = null;
-        while ((parent = root.getParent()) != null) {
-            if (parent.getName().equals(BACKUP_DIR_NAME)) {
-                break;
-            }
-        }
-
-        Preconditions.checkNotNull(parent);
-        Text.writeString(out, root.getName());
-        parent.write(out);
-    }
-
-    @Override
-    public void readFields(DataInput in) throws IOException {
-        DirSaver backupDir = DirSaver.createWithPath(BACKUP_DIR);
-
-        String rootName = Text.readString(in);
-
-        DirSaver parent = new DirSaver();
-        parent.readFields(in);
-        backupDir.addChild(parent);
-
-        DirSaver currentDir = parent;
-        while (!currentDir.hasChild(rootName)) {
-            Collection<String> childNames = currentDir.getChildrenName();
-            Preconditions.checkState(childNames.size() == 1);
-            for (String childName : childNames) {
-                currentDir = (DirSaver) currentDir.getChild(childName);
-            }
-        }
-
-        root = (DirSaver) currentDir.getChild(rootName);
-    }
-}
diff --git a/fe/src/main/java/org/apache/doris/backup/Repository.java b/fe/src/main/java/org/apache/doris/backup/Repository.java
index 061269e..ded28be 100644
--- a/fe/src/main/java/org/apache/doris/backup/Repository.java
+++ b/fe/src/main/java/org/apache/doris/backup/Repository.java
@@ -646,7 +646,6 @@ public class Repository implements Writable {
         out.writeLong(createTime);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         id = in.readLong();
         name = Text.readString(in);
diff --git a/fe/src/main/java/org/apache/doris/backup/RepositoryMgr.java b/fe/src/main/java/org/apache/doris/backup/RepositoryMgr.java
index 3d23a57..2076a75 100644
--- a/fe/src/main/java/org/apache/doris/backup/RepositoryMgr.java
+++ b/fe/src/main/java/org/apache/doris/backup/RepositoryMgr.java
@@ -139,7 +139,6 @@ public class RepositoryMgr extends Daemon implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         int size = in.readInt();
         for (int i = 0; i < size; i++) {
diff --git a/fe/src/main/java/org/apache/doris/backup/RestoreFileMapping.java b/fe/src/main/java/org/apache/doris/backup/RestoreFileMapping.java
index 1b610b3..d511d15 100644
--- a/fe/src/main/java/org/apache/doris/backup/RestoreFileMapping.java
+++ b/fe/src/main/java/org/apache/doris/backup/RestoreFileMapping.java
@@ -106,7 +106,6 @@ public class RestoreFileMapping implements Writable {
             }
         }
 
-        @Override
         public void readFields(DataInput in) throws IOException {
             int size = in.readInt();
             chain = new Long[size];
@@ -172,7 +171,6 @@ public class RestoreFileMapping implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         int size = in.readInt();
         for (int i = 0; i < size; i++) {
diff --git a/fe/src/main/java/org/apache/doris/backup/RestoreJob.java b/fe/src/main/java/org/apache/doris/backup/RestoreJob.java
index 3c9831a..bb0dc34 100644
--- a/fe/src/main/java/org/apache/doris/backup/RestoreJob.java
+++ b/fe/src/main/java/org/apache/doris/backup/RestoreJob.java
@@ -1505,7 +1505,6 @@ public class RestoreJob extends AbstractJob {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
 
diff --git a/fe/src/main/java/org/apache/doris/backup/SaveManifestTask.java b/fe/src/main/java/org/apache/doris/backup/SaveManifestTask.java
deleted file mode 100644
index 9dcf96c..0000000
--- a/fe/src/main/java/org/apache/doris/backup/SaveManifestTask.java
+++ /dev/null
@@ -1,227 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package org.apache.doris.backup;
-
-import org.apache.doris.common.Config;
-import org.apache.doris.common.UserException;
-import org.apache.doris.common.io.Writable;
-import org.apache.doris.common.util.CommandResult;
-import org.apache.doris.common.util.Util;
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.io.IOException;
-import java.util.List;
-
-public class SaveManifestTask extends ResultfulTask {
-    private static final Logger LOG = LogManager.getLogger(SaveManifestTask.class);
-
-    private long jobId;
-    private String label;
-    private String remotePath;
-    private String localDirName;
-
-    private String lastestLoadLabel;
-    private String lastestDeleteInfo;
-
-    private PathBuilder pathBuilder;
-    private CommandBuilder commandBuilder;
-
-    public SaveManifestTask(long jobId, String label, String remotePath, String localDirName,
-                            String lastestLoadLabel, String lastestDeleteInfo,
-                            PathBuilder pathBuilder, CommandBuilder commandBuilder) {
-        this.jobId = jobId;
-        this.label = label;
-        this.remotePath = remotePath;
-        this.localDirName = localDirName;
-        this.lastestLoadLabel = lastestLoadLabel;
-        this.lastestDeleteInfo = lastestDeleteInfo;
-        this.pathBuilder = pathBuilder;
-        this.commandBuilder = commandBuilder;
-        this.errMsg = null;
-    }
-
-    @Override
-    public String call() throws Exception {
-        try {
-            // 1. save and upload manifest
-            saveAndUploadManifest();
-            // 2. save and upload readable manifest
-            saveAndUploadReadableManifest();
-        } catch (Exception e) {
-            setErrMsg(e);
-            return errMsg;
-        }
-
-        return null;
-    }
-
-    private void saveAndUploadManifest() throws UserException {
-        String manifestPath = pathBuilder.manifest();
-        DirSaver labelDir = pathBuilder.getRoot();
-        Preconditions.checkState(labelDir.getName().equals(localDirName));
-        List<? extends Writable> writables = Lists.newArrayList(labelDir);
-
-        String msg = null;
-        boolean succeed = false;
-        for (int i = 0; i < MAX_RETRY_TIME; i++) {
-            try {
-                ObjectWriter.write(manifestPath, writables);
-                succeed = true;
-                break;
-            } catch (IOException e) {
-                msg = e.getMessage();
-                LOG.warn(e.getMessage() + ". retry: " + i);
-                try {
-                    Thread.sleep(MAX_RETRY_INTERVAL_MS);
-                } catch (InterruptedException e1) {
-                    LOG.warn(e.getMessage());
-                    break;
-                }
-            }
-        }
-
-        if (!succeed) {
-            throw new UserException(msg);
-        }
-
-        uploadManifest(manifestPath, PathBuilder.MANIFEST_NAME);
-    }
-
-
-    private void saveAndUploadReadableManifest() throws UserException {
-        String localReadableManifest = pathBuilder.readableManifest();
-
-        // get list
-        List<String> backupedObjs = Lists.newArrayList();
-        DirSaver root = pathBuilder.getRoot();
-        for (FileSaverI rootChild : root.getChildren()) {
-            if (rootChild instanceof FileSaver) {
-                continue;
-            }
-
-            DirSaver dbDir = (DirSaver) rootChild;
-            for (FileSaverI dbChild : dbDir.getChildren()) {
-                if (dbChild instanceof FileSaver) {
-                    continue;
-                }
-
-                DirSaver tableDir = (DirSaver) dbChild;
-                String tableName = tableDir.getName();
-                boolean hasDir = false;
-                for (FileSaverI tableChild : tableDir.getChildren()) {
-                    if (tableChild instanceof FileSaver) {
-                        continue;
-                    }
-
-                    hasDir = true;
-                    String partitionName = tableChild.getName();
-
-                    String res = PathBuilder.createPath(tableName, partitionName);
-                    backupedObjs.add(res);
-                    LOG.debug("get backuped obj: {}", res);
-                } // end for tables
-
-                if (!hasDir) {
-                    // non-olap table(mysql etc)
-                    backupedObjs.add(tableName);
-                }
-            } // end for dbs;
-        } // end for labels
-
-        if (backupedObjs.isEmpty()) {
-            throw new UserException("nothing backuped??!!, job: " + jobId);
-        }
-
-        // add last load label and last delete info
-        backupedObjs.add("Last Load Label: " + lastestLoadLabel);
-        backupedObjs.add("Last Delete: " + lastestDeleteInfo);
-
-        String msg = null;
-        boolean succeed = false;
-        for (int i = 0; i < MAX_RETRY_TIME; i++) {
-            try {
-                ObjectWriter.writeReadable(localReadableManifest, backupedObjs);
-                succeed = true;
-                break;
-            } catch (IOException e) {
-                msg = e.getMessage();
-                LOG.warn(e.getMessage() + ". retry: " + i);
-                try {
-                    Thread.sleep(MAX_RETRY_INTERVAL_MS);
-                } catch (InterruptedException e1) {
-                    LOG.warn(e.getMessage());
-                    break;
-                }
-            }
-        }
-
-        if (!succeed) {
-            LOG.warn("Failed to save readable manifest. job: {}", jobId);
-            throw new UserException(msg);
-        }
-
-        uploadManifest(localReadableManifest, PathBuilder.READABLE_MANIFEST_NAME);
-    }
-
-    private void uploadManifest(String manifestFile, String fileName) throws UserException {
-        String uploadCmd = null;
-        String msg = null;
-        boolean succeed = false;
-        for (int i = 0; i < MAX_RETRY_TIME; i++) {
-            try {
-                String readableManifestPath = PathBuilder.createPath(remotePath, label, fileName);
-                uploadCmd = commandBuilder.uploadCmd(label, manifestFile, readableManifestPath);
-            } catch (IOException e) {
-                msg = e.getMessage();
-                LOG.warn("{}. job[{}]. retry: {}", errMsg, jobId, i);
-                try {
-                    Thread.sleep(MAX_RETRY_INTERVAL_MS);
-                    continue;
-                } catch (InterruptedException e1) {
-                    LOG.warn(e.getMessage());
-                    break;
-                }
-            }
-
-            String[] envp = { "LC_ALL=" + Config.locale };
-            CommandResult result = Util.executeCommand(uploadCmd, envp);
-            if (result.getReturnCode() != 0) {
-                msg = "failed to upload meta files[" + result + "]. backup job[" + jobId + "]";
-                LOG.warn("{}. job[{}]. retry: {}", errMsg, jobId, i);
-                try {
-                    Thread.sleep(MAX_RETRY_INTERVAL_MS);
-                    continue;
-                } catch (InterruptedException e) {
-                    LOG.warn(e.getMessage());
-                    break;
-                }
-            }
-
-            succeed = true;
-        }
-
-        if (!succeed) {
-            throw new UserException(msg);
-        }
-    }
-}
diff --git a/fe/src/main/java/org/apache/doris/backup/SnapshotInfo.java b/fe/src/main/java/org/apache/doris/backup/SnapshotInfo.java
index 9a6a6ec..60847e8 100644
--- a/fe/src/main/java/org/apache/doris/backup/SnapshotInfo.java
+++ b/fe/src/main/java/org/apache/doris/backup/SnapshotInfo.java
@@ -129,7 +129,6 @@ public class SnapshotInfo implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         dbId = in.readLong();
         tblId = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/catalog/AggregateFunction.java b/fe/src/main/java/org/apache/doris/catalog/AggregateFunction.java
index e0ef1fc..1b09fbb 100644
--- a/fe/src/main/java/org/apache/doris/catalog/AggregateFunction.java
+++ b/fe/src/main/java/org/apache/doris/catalog/AggregateFunction.java
@@ -402,7 +402,6 @@ public class AggregateFunction extends Function {
         output.writeBoolean(returnsNonNullOnEmpty);
     }
 
-    @Override
     public void readFields(DataInput input) throws IOException {
         super.readFields(input);
 
diff --git a/fe/src/main/java/org/apache/doris/catalog/AuthorizationInfo.java b/fe/src/main/java/org/apache/doris/catalog/AuthorizationInfo.java
index 5db1d0e..50c2e97 100644
--- a/fe/src/main/java/org/apache/doris/catalog/AuthorizationInfo.java
+++ b/fe/src/main/java/org/apache/doris/catalog/AuthorizationInfo.java
@@ -78,7 +78,6 @@ public class AuthorizationInfo implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         if (in.readBoolean()) {
             dbName = Text.readString(in);
diff --git a/fe/src/main/java/org/apache/doris/catalog/BrokerMgr.java b/fe/src/main/java/org/apache/doris/catalog/BrokerMgr.java
index 7fb8d86..7873bab 100644
--- a/fe/src/main/java/org/apache/doris/catalog/BrokerMgr.java
+++ b/fe/src/main/java/org/apache/doris/catalog/BrokerMgr.java
@@ -373,7 +373,6 @@ public class BrokerMgr {
             }
         }
 
-        @Override
         public void readFields(DataInput in) throws IOException {
             brokerName = Text.readString(in);
             int size = in.readInt();
diff --git a/fe/src/main/java/org/apache/doris/catalog/BrokerTable.java b/fe/src/main/java/org/apache/doris/catalog/BrokerTable.java
index b7741cd..5adbc9d 100644
--- a/fe/src/main/java/org/apache/doris/catalog/BrokerTable.java
+++ b/fe/src/main/java/org/apache/doris/catalog/BrokerTable.java
@@ -228,7 +228,6 @@ public class BrokerTable extends Table {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
 
diff --git a/fe/src/main/java/org/apache/doris/catalog/CatalogRecycleBin.java b/fe/src/main/java/org/apache/doris/catalog/CatalogRecycleBin.java
index 539cbcb..b1c9d25 100644
--- a/fe/src/main/java/org/apache/doris/catalog/CatalogRecycleBin.java
+++ b/fe/src/main/java/org/apache/doris/catalog/CatalogRecycleBin.java
@@ -691,7 +691,6 @@ public class CatalogRecycleBin extends MasterDaemon implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         int count = in.readInt();
         for (int i = 0; i < count; i++) {
@@ -757,7 +756,6 @@ public class CatalogRecycleBin extends MasterDaemon implements Writable {
             }
         }
 
-        @Override
         public void readFields(DataInput in) throws IOException {
             db = Database.read(in);
             
@@ -796,7 +794,6 @@ public class CatalogRecycleBin extends MasterDaemon implements Writable {
             table.write(out);
         }
 
-        @Override
         public void readFields(DataInput in) throws IOException {
             dbId = in.readLong();
             table = Table.read(in);
@@ -859,7 +856,6 @@ public class CatalogRecycleBin extends MasterDaemon implements Writable {
             out.writeShort(replicationNum);
         }
 
-        @Override
         public void readFields(DataInput in) throws IOException {
             dbId = in.readLong();
             tableId = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/catalog/ColocateGroupSchema.java b/fe/src/main/java/org/apache/doris/catalog/ColocateGroupSchema.java
index 4a6ae28..0ea7b15 100644
--- a/fe/src/main/java/org/apache/doris/catalog/ColocateGroupSchema.java
+++ b/fe/src/main/java/org/apache/doris/catalog/ColocateGroupSchema.java
@@ -126,7 +126,6 @@ public class ColocateGroupSchema implements Writable {
         out.writeShort(replicationNum);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         groupId = GroupId.read(in);
         int size = in.readInt();
diff --git a/fe/src/main/java/org/apache/doris/catalog/ColocateTableIndex.java b/fe/src/main/java/org/apache/doris/catalog/ColocateTableIndex.java
index c8a685f..d3dcbe8 100644
--- a/fe/src/main/java/org/apache/doris/catalog/ColocateTableIndex.java
+++ b/fe/src/main/java/org/apache/doris/catalog/ColocateTableIndex.java
@@ -77,7 +77,6 @@ public class ColocateTableIndex implements Writable {
             out.writeLong(grpId);
         }
 
-        @Override
         public void readFields(DataInput in) throws IOException {
             dbId = in.readLong();
             grpId = in.readLong();
@@ -545,7 +544,6 @@ public class ColocateTableIndex implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         int size = in.readInt();
         if (Catalog.getCurrentCatalogJournalVersion() < FeMetaVersion.VERSION_55) {
diff --git a/fe/src/main/java/org/apache/doris/catalog/Column.java b/fe/src/main/java/org/apache/doris/catalog/Column.java
index 6e076c3..3659efe 100644
--- a/fe/src/main/java/org/apache/doris/catalog/Column.java
+++ b/fe/src/main/java/org/apache/doris/catalog/Column.java
@@ -400,7 +400,6 @@ public class Column implements Writable {
         Text.writeString(out, comment);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         name = Text.readString(in);
         type = ColumnType.read(in);
diff --git a/fe/src/main/java/org/apache/doris/catalog/ColumnStats.java b/fe/src/main/java/org/apache/doris/catalog/ColumnStats.java
index 0bd30db..9191649 100644
--- a/fe/src/main/java/org/apache/doris/catalog/ColumnStats.java
+++ b/fe/src/main/java/org/apache/doris/catalog/ColumnStats.java
@@ -122,7 +122,6 @@ public class ColumnStats implements Writable {
         out.writeLong(maxSize);
         out.writeLong(numNulls);
     }
-
     public void readFields(DataInput in) throws IOException {
         numDistinctValues = in.readLong();
         avgSerializedSize = in.readFloat();
diff --git a/fe/src/main/java/org/apache/doris/catalog/DataProperty.java b/fe/src/main/java/org/apache/doris/catalog/DataProperty.java
index 7487baa..d2f423c 100644
--- a/fe/src/main/java/org/apache/doris/catalog/DataProperty.java
+++ b/fe/src/main/java/org/apache/doris/catalog/DataProperty.java
@@ -66,7 +66,6 @@ public class DataProperty implements Writable {
         out.writeLong(cooldownTimeMs);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         storageMedium = TStorageMedium.valueOf(Text.readString(in));
         cooldownTimeMs = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/catalog/Database.java b/fe/src/main/java/org/apache/doris/catalog/Database.java
index 6c03565..4444568 100644
--- a/fe/src/main/java/org/apache/doris/catalog/Database.java
+++ b/fe/src/main/java/org/apache/doris/catalog/Database.java
@@ -415,7 +415,6 @@ public class Database extends MetaObject implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
 
diff --git a/fe/src/main/java/org/apache/doris/catalog/DiskInfo.java b/fe/src/main/java/org/apache/doris/catalog/DiskInfo.java
index 8470c0c..4a7f458 100644
--- a/fe/src/main/java/org/apache/doris/catalog/DiskInfo.java
+++ b/fe/src/main/java/org/apache/doris/catalog/DiskInfo.java
@@ -162,7 +162,6 @@ public class DiskInfo implements Writable {
         Text.writeString(out, state.name());
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         this.rootPath = Text.readString(in);
         this.totalCapacityB = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/catalog/DistributionInfo.java b/fe/src/main/java/org/apache/doris/catalog/DistributionInfo.java
index acb7206..d2b425e 100644
--- a/fe/src/main/java/org/apache/doris/catalog/DistributionInfo.java
+++ b/fe/src/main/java/org/apache/doris/catalog/DistributionInfo.java
@@ -68,7 +68,6 @@ public abstract class DistributionInfo implements Writable {
         Text.writeString(out, type.name());
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         type = DistributionInfoType.valueOf(Text.readString(in));
     }
diff --git a/fe/src/main/java/org/apache/doris/catalog/EsTable.java b/fe/src/main/java/org/apache/doris/catalog/EsTable.java
index 1b856c2..2045d6c 100644
--- a/fe/src/main/java/org/apache/doris/catalog/EsTable.java
+++ b/fe/src/main/java/org/apache/doris/catalog/EsTable.java
@@ -253,7 +253,6 @@ public class EsTable extends Table {
         partitionInfo.write(out);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
         if (Catalog.getCurrentCatalogJournalVersion() >= FeMetaVersion.VERSION_68) {
diff --git a/fe/src/main/java/org/apache/doris/catalog/FsBroker.java b/fe/src/main/java/org/apache/doris/catalog/FsBroker.java
index 56f81d2..fbda405 100644
--- a/fe/src/main/java/org/apache/doris/catalog/FsBroker.java
+++ b/fe/src/main/java/org/apache/doris/catalog/FsBroker.java
@@ -111,7 +111,6 @@ public class FsBroker implements Writable, Comparable<FsBroker> {
         out.writeInt(port);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         ip = Text.readString(in);
         port = in.readInt();
diff --git a/fe/src/main/java/org/apache/doris/catalog/Function.java b/fe/src/main/java/org/apache/doris/catalog/Function.java
index bab63be..5d56a7c 100644
--- a/fe/src/main/java/org/apache/doris/catalog/Function.java
+++ b/fe/src/main/java/org/apache/doris/catalog/Function.java
@@ -609,7 +609,6 @@ public class Function implements Writable {
         throw new Error("Origin function cannot be serialized");
     }
 
-    @Override
     public void readFields(DataInput input) throws IOException {
         id = input.readLong();
         name = FunctionName.read(input);
diff --git a/fe/src/main/java/org/apache/doris/catalog/FunctionSearchDesc.java b/fe/src/main/java/org/apache/doris/catalog/FunctionSearchDesc.java
index 95d53a1..d357ff2 100644
--- a/fe/src/main/java/org/apache/doris/catalog/FunctionSearchDesc.java
+++ b/fe/src/main/java/org/apache/doris/catalog/FunctionSearchDesc.java
@@ -94,7 +94,6 @@ public class FunctionSearchDesc implements Writable {
         out.writeBoolean(isVariadic);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         name = FunctionName.read(in);
         // read args
diff --git a/fe/src/main/java/org/apache/doris/catalog/HashDistributionInfo.java b/fe/src/main/java/org/apache/doris/catalog/HashDistributionInfo.java
index e0ab9be..498bee4 100644
--- a/fe/src/main/java/org/apache/doris/catalog/HashDistributionInfo.java
+++ b/fe/src/main/java/org/apache/doris/catalog/HashDistributionInfo.java
@@ -65,7 +65,6 @@ public class HashDistributionInfo extends DistributionInfo {
         }
         out.writeInt(bucketNum);
     }
-
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
         int columnCount = in.readInt();
diff --git a/fe/src/main/java/org/apache/doris/catalog/InfoSchemaDb.java b/fe/src/main/java/org/apache/doris/catalog/InfoSchemaDb.java
index dc420d3..7fcc9b4 100644
--- a/fe/src/main/java/org/apache/doris/catalog/InfoSchemaDb.java
+++ b/fe/src/main/java/org/apache/doris/catalog/InfoSchemaDb.java
@@ -64,7 +64,6 @@ public class InfoSchemaDb extends Database {
         // Do nothing
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         throw new IOException("Not support.");
     }
diff --git a/fe/src/main/java/org/apache/doris/catalog/KuduTable.java b/fe/src/main/java/org/apache/doris/catalog/KuduTable.java
index 6730d56..8e77cec 100644
--- a/fe/src/main/java/org/apache/doris/catalog/KuduTable.java
+++ b/fe/src/main/java/org/apache/doris/catalog/KuduTable.java
@@ -132,7 +132,6 @@ public class KuduTable extends Table {
         out.writeBoolean(isObsolate);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
 
diff --git a/fe/src/main/java/org/apache/doris/catalog/MaterializedIndex.java b/fe/src/main/java/org/apache/doris/catalog/MaterializedIndex.java
index ebcbe4a..5d6841b 100644
--- a/fe/src/main/java/org/apache/doris/catalog/MaterializedIndex.java
+++ b/fe/src/main/java/org/apache/doris/catalog/MaterializedIndex.java
@@ -203,7 +203,6 @@ public class MaterializedIndex extends MetaObject implements Writable {
         out.writeLong(rollupFinishedVersion);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
 
diff --git a/fe/src/main/java/org/apache/doris/catalog/MetaObject.java b/fe/src/main/java/org/apache/doris/catalog/MetaObject.java
index 02aab26..20af0e7 100644
--- a/fe/src/main/java/org/apache/doris/catalog/MetaObject.java
+++ b/fe/src/main/java/org/apache/doris/catalog/MetaObject.java
@@ -56,7 +56,6 @@ public class MetaObject implements Writable {
         out.writeLong(lastCheckTime);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         if (Catalog.getCurrentCatalogJournalVersion() >= FeMetaVersion.VERSION_22) {
             this.signature = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/catalog/MysqlTable.java b/fe/src/main/java/org/apache/doris/catalog/MysqlTable.java
index a31872f..7fa733b 100644
--- a/fe/src/main/java/org/apache/doris/catalog/MysqlTable.java
+++ b/fe/src/main/java/org/apache/doris/catalog/MysqlTable.java
@@ -193,7 +193,6 @@ public class MysqlTable extends Table {
         Text.writeString(out, mysqlTableName);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
 
diff --git a/fe/src/main/java/org/apache/doris/catalog/OlapTable.java b/fe/src/main/java/org/apache/doris/catalog/OlapTable.java
index e8e4ca4..df1c72f 100644
--- a/fe/src/main/java/org/apache/doris/catalog/OlapTable.java
+++ b/fe/src/main/java/org/apache/doris/catalog/OlapTable.java
@@ -821,7 +821,6 @@ public class OlapTable extends Table {
         out.writeLong(baseIndexId);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
 
@@ -928,7 +927,7 @@ public class OlapTable extends Table {
 
     public OlapTable selectiveCopy(Collection<String> reservedPartNames, boolean resetState, IndexExtState extState) {
         OlapTable copied = new OlapTable();
-        if (!DeepCopy.copy(this, copied)) {
+        if (!DeepCopy.copy(this, copied, OlapTable.class)) {
             LOG.warn("failed to copy olap table: " + getName());
             return null;
         }
diff --git a/fe/src/main/java/org/apache/doris/catalog/Partition.java b/fe/src/main/java/org/apache/doris/catalog/Partition.java
index d5afe6c..3bb2ae0 100644
--- a/fe/src/main/java/org/apache/doris/catalog/Partition.java
+++ b/fe/src/main/java/org/apache/doris/catalog/Partition.java
@@ -329,7 +329,6 @@ public class Partition extends MetaObject implements Writable {
         distributionInfo.write(out);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
 
diff --git a/fe/src/main/java/org/apache/doris/catalog/PartitionInfo.java b/fe/src/main/java/org/apache/doris/catalog/PartitionInfo.java
index b0d98b7..c8a12c5 100644
--- a/fe/src/main/java/org/apache/doris/catalog/PartitionInfo.java
+++ b/fe/src/main/java/org/apache/doris/catalog/PartitionInfo.java
@@ -116,7 +116,6 @@ public class PartitionInfo implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         type = PartitionType.valueOf(Text.readString(in));
 
diff --git a/fe/src/main/java/org/apache/doris/catalog/PartitionKey.java b/fe/src/main/java/org/apache/doris/catalog/PartitionKey.java
index b1681d4..3c5733f 100644
--- a/fe/src/main/java/org/apache/doris/catalog/PartitionKey.java
+++ b/fe/src/main/java/org/apache/doris/catalog/PartitionKey.java
@@ -252,7 +252,6 @@ public class PartitionKey implements Comparable<PartitionKey>, Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         int count = in.readInt();
         for (int i = 0; i < count; i++) {
diff --git a/fe/src/main/java/org/apache/doris/catalog/RandomDistributionInfo.java b/fe/src/main/java/org/apache/doris/catalog/RandomDistributionInfo.java
index 7458449..013d6e3 100644
--- a/fe/src/main/java/org/apache/doris/catalog/RandomDistributionInfo.java
+++ b/fe/src/main/java/org/apache/doris/catalog/RandomDistributionInfo.java
@@ -65,7 +65,6 @@ public class RandomDistributionInfo extends DistributionInfo {
         super.write(out);
         out.writeInt(bucketNum);
     }
-
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
         bucketNum = in.readInt();
diff --git a/fe/src/main/java/org/apache/doris/catalog/RangePartitionInfo.java b/fe/src/main/java/org/apache/doris/catalog/RangePartitionInfo.java
index 9cfb45c..0c8af9b 100644
--- a/fe/src/main/java/org/apache/doris/catalog/RangePartitionInfo.java
+++ b/fe/src/main/java/org/apache/doris/catalog/RangePartitionInfo.java
@@ -336,7 +336,6 @@ public class RangePartitionInfo extends PartitionInfo {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
 
diff --git a/fe/src/main/java/org/apache/doris/catalog/Replica.java b/fe/src/main/java/org/apache/doris/catalog/Replica.java
index 7c4df9e..958b722 100644
--- a/fe/src/main/java/org/apache/doris/catalog/Replica.java
+++ b/fe/src/main/java/org/apache/doris/catalog/Replica.java
@@ -467,7 +467,6 @@ public class Replica implements Writable {
         out.writeLong(lastSuccessVersionHash);
     }
      
-    @Override
     public void readFields(DataInput in) throws IOException {
         id = in.readLong();
         backendId = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/catalog/ResourceGroup.java b/fe/src/main/java/org/apache/doris/catalog/ResourceGroup.java
index eca5144..eeea765 100644
--- a/fe/src/main/java/org/apache/doris/catalog/ResourceGroup.java
+++ b/fe/src/main/java/org/apache/doris/catalog/ResourceGroup.java
@@ -109,7 +109,6 @@ public class ResourceGroup implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         int numResource = in.readInt();
         for (int i = 0; i < numResource; ++i) {
diff --git a/fe/src/main/java/org/apache/doris/catalog/ScalarFunction.java b/fe/src/main/java/org/apache/doris/catalog/ScalarFunction.java
index 4aa2aaa..8871a82 100644
--- a/fe/src/main/java/org/apache/doris/catalog/ScalarFunction.java
+++ b/fe/src/main/java/org/apache/doris/catalog/ScalarFunction.java
@@ -290,7 +290,6 @@ public class ScalarFunction extends Function {
         writeOptionString(output, closeFnSymbol);
     }
 
-    @Override
     public void readFields(DataInput input) throws IOException {
         super.readFields(input);
         symbolName = Text.readString(input);
diff --git a/fe/src/main/java/org/apache/doris/catalog/SchemaTable.java b/fe/src/main/java/org/apache/doris/catalog/SchemaTable.java
index fbfb5f5..a1424a8 100644
--- a/fe/src/main/java/org/apache/doris/catalog/SchemaTable.java
+++ b/fe/src/main/java/org/apache/doris/catalog/SchemaTable.java
@@ -402,7 +402,6 @@ public class SchemaTable extends Table {
         throw new UnsupportedOperationException("Do not allow to write SchemaTable to image.");
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         throw new UnsupportedOperationException("Do not allow read SchemaTable from image.");
     }
diff --git a/fe/src/main/java/org/apache/doris/catalog/SinglePartitionInfo.java b/fe/src/main/java/org/apache/doris/catalog/SinglePartitionInfo.java
index 7deb1bd..4a24135 100644
--- a/fe/src/main/java/org/apache/doris/catalog/SinglePartitionInfo.java
+++ b/fe/src/main/java/org/apache/doris/catalog/SinglePartitionInfo.java
@@ -37,7 +37,6 @@ public class SinglePartitionInfo extends PartitionInfo {
         super.write(out);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
     }
diff --git a/fe/src/main/java/org/apache/doris/catalog/Table.java b/fe/src/main/java/org/apache/doris/catalog/Table.java
index 0aab791..688b240 100644
--- a/fe/src/main/java/org/apache/doris/catalog/Table.java
+++ b/fe/src/main/java/org/apache/doris/catalog/Table.java
@@ -201,7 +201,6 @@ public class Table extends MetaObject implements Writable {
         out.writeLong(createTime);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         if (!isTypeRead) {
             type = TableType.valueOf(Text.readString(in));
diff --git a/fe/src/main/java/org/apache/doris/catalog/Tablet.java b/fe/src/main/java/org/apache/doris/catalog/Tablet.java
index 91279f7..b377394 100644
--- a/fe/src/main/java/org/apache/doris/catalog/Tablet.java
+++ b/fe/src/main/java/org/apache/doris/catalog/Tablet.java
@@ -312,7 +312,6 @@ public class Tablet extends MetaObject implements Writable {
         out.writeLong(checkedVersionHash);
         out.writeBoolean(isConsistent);
     }
-
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
 
diff --git a/fe/src/main/java/org/apache/doris/catalog/View.java b/fe/src/main/java/org/apache/doris/catalog/View.java
index 77c39f0..7ac04be 100644
--- a/fe/src/main/java/org/apache/doris/catalog/View.java
+++ b/fe/src/main/java/org/apache/doris/catalog/View.java
@@ -200,7 +200,6 @@ public class View extends Table {
         Text.writeString(out, inlineViewDef);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
         // just do not want to modify the meta version, so leave originalViewDef here but set it as empty
diff --git a/fe/src/main/java/org/apache/doris/cluster/BaseParam.java b/fe/src/main/java/org/apache/doris/cluster/BaseParam.java
index 39359b3..ba6acda 100644
--- a/fe/src/main/java/org/apache/doris/cluster/BaseParam.java
+++ b/fe/src/main/java/org/apache/doris/cluster/BaseParam.java
@@ -90,7 +90,6 @@ public class BaseParam implements Writable {
 
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         int count = in.readInt();
         while (count-- > 0) {
diff --git a/fe/src/main/java/org/apache/doris/cluster/Cluster.java b/fe/src/main/java/org/apache/doris/cluster/Cluster.java
index d4c734d..bc378ac 100644
--- a/fe/src/main/java/org/apache/doris/cluster/Cluster.java
+++ b/fe/src/main/java/org/apache/doris/cluster/Cluster.java
@@ -237,7 +237,6 @@ public class Cluster implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         id = in.readLong();
         name = Text.readString(in);
diff --git a/fe/src/main/java/org/apache/doris/common/io/DeepCopy.java b/fe/src/main/java/org/apache/doris/common/io/DeepCopy.java
index ed14a82..93a5884 100644
--- a/fe/src/main/java/org/apache/doris/common/io/DeepCopy.java
+++ b/fe/src/main/java/org/apache/doris/common/io/DeepCopy.java
@@ -23,13 +23,23 @@ import org.apache.doris.meta.MetaContext;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
+import java.io.DataInput;
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
+import java.lang.reflect.Method;
 
+/*
+ * This class is for deep copying a writable instance.
+ */
 public class DeepCopy {
     private static final Logger LOG = LogManager.getLogger(DeepCopy.class);
 
-    public static boolean copy(Writable orig, Writable copied) {
+    public static final String READ_METHOD_NAME = "readFields";
+
+    // deep copy orig to dest.
+    // the param "c" is the implementation class of "dest".
+    // And the "dest" class must has method "readFields(DataInput)"
+    public static boolean copy(Writable orig, Writable dest, Class c) {
         MetaContext metaContext = new MetaContext();
         metaContext.setMetaVersion(FeConstants.meta_version);
         metaContext.setThreadLocalInfo();
@@ -42,7 +52,9 @@ public class DeepCopy {
             out.close();
 
             DataInputStream in = new DataInputStream(byteArrayOutputStream.getInputStream());
-            copied.readFields(in);
+            
+            Method readMethod = c.getDeclaredMethod(READ_METHOD_NAME, DataInput.class);
+            readMethod.invoke(dest, in);
             in.close();
         } catch (Exception e) {
             e.printStackTrace();
diff --git a/fe/src/main/java/org/apache/doris/common/io/Text.java b/fe/src/main/java/org/apache/doris/common/io/Text.java
index 71da100..0f27691 100644
--- a/fe/src/main/java/org/apache/doris/common/io/Text.java
+++ b/fe/src/main/java/org/apache/doris/common/io/Text.java
@@ -294,7 +294,6 @@ public class Text implements Writable {
         }
     }
 
-    // Deserialize
     public void readFields(DataInput in) throws IOException {
         int newLength = in.readInt();
         setCapacity(newLength, false);
diff --git a/fe/src/main/java/org/apache/doris/common/io/Writable.java b/fe/src/main/java/org/apache/doris/common/io/Writable.java
index 58742c7..a258168 100644
--- a/fe/src/main/java/org/apache/doris/common/io/Writable.java
+++ b/fe/src/main/java/org/apache/doris/common/io/Writable.java
@@ -18,44 +18,42 @@
 package org.apache.doris.common.io;
 
 import java.io.DataOutput;
-import java.io.DataInput;
 import java.io.IOException;
 
-/**
- * A serializable object which implements a simple, efficient, serialization 
- * protocol, based on {@link DataInput} and {@link DataOutput}.
- *
- * <p>Any <code>key</code> or <code>value</code> type in the Hadoop Map-Reduce
- * framework implements this interface.</p>
+/*
+ * Any class that requires persistence should implement the Writable interface.
+ * This interface requires only a uniform writable method "write()",
+ * but does not require a uniform read method.
+ * The usage of writable interface implementation class is as follows:
  * 
- * <p>Implementations typically implement a static <code>read(DataInput)</code>
- * method which constructs a new instance, calls {@link #readFields(DataInput)} 
- * and returns the instance.</p>
+ * Class A implements Writable {
+ *      @Override
+ *      public void write(DataOutput out) throws IOException {
+ *          in.write(x);
+ *          in.write(y);
+ *          ...
+ *      }
+ *      
+ *      private void readFields(DataInput in) throws IOException {
+ *          x = in.read();
+ *          y = in.read();
+ *          ...
+ *      }
+ *      
+ *      public static A read(DataInput in) throws IOException {
+ *          A a = new A();
+ *          a.readFields();
+ *          return a;
+ *      }
+ * }
  * 
- * <p>Example:</p>
- * <p><blockquote><pre>
- *     public class MyWritable implements Writable {
- *       // Some data     
- *       private int counter;
- *       private long timestamp;
- *       
- *       public void write(DataOutput out) throws IOException {
- *         out.writeInt(counter);
- *         out.writeLong(timestamp);
- *       }
- *       
- *       public void readFields(DataInput in) throws IOException {
- *         counter = in.readInt();
- *         timestamp = in.readLong();
- *       }
- *       
- *       public static MyWritable read(DataInput in) throws IOException {
- *         MyWritable w = new MyWritable();
- *         w.readFields(in);
- *         return w;
- *       }
- *     }
- * </pre></blockquote></p>
+ * A a = new A();
+ * a.write(out);
+ * ...
+ * A other = A.read(in);
+ * 
+ * The "readFields()" can be implemented as whatever you like, or even without it
+ * by just implementing the static read method.
  */
 public interface Writable {
     /** 
@@ -65,15 +63,4 @@ public interface Writable {
      * @throws IOException
      */
     void write(DataOutput out) throws IOException;
-
-    /** 
-     * Deserialize the fields of this object from <code>in</code>.  
-     * 
-     * <p>For efficiency, implementations should attempt to re-use storage in the 
-     * existing object where possible.</p>
-     * 
-     * @param in <code>DataInput</code> to deseriablize this object from.
-     * @throws IOException
-     */
-    void readFields(DataInput in) throws IOException;
 }
diff --git a/fe/src/main/java/org/apache/doris/common/util/SmallFileMgr.java b/fe/src/main/java/org/apache/doris/common/util/SmallFileMgr.java
index 0cd05c9..3bafb68 100644
--- a/fe/src/main/java/org/apache/doris/common/util/SmallFileMgr.java
+++ b/fe/src/main/java/org/apache/doris/common/util/SmallFileMgr.java
@@ -112,7 +112,6 @@ public class SmallFileMgr implements Writable {
             out.writeBoolean(isContent);
         }
 
-        @Override
         public void readFields(DataInput in) throws IOException {
             dbId = in.readLong();
             catalog = Text.readString(in);
@@ -502,7 +501,6 @@ public class SmallFileMgr implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         int size = in.readInt();
         for (int i = 0; i < size; i++) {
diff --git a/fe/src/main/java/org/apache/doris/ha/MasterInfo.java b/fe/src/main/java/org/apache/doris/ha/MasterInfo.java
index 27ba1e6..77fb838 100644
--- a/fe/src/main/java/org/apache/doris/ha/MasterInfo.java
+++ b/fe/src/main/java/org/apache/doris/ha/MasterInfo.java
@@ -73,7 +73,6 @@ public class MasterInfo implements Writable {
         out.writeInt(rpcPort);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         ip = Text.readString(in);
         httpPort = in.readInt();
diff --git a/fe/src/main/java/org/apache/doris/journal/JournalEntity.java b/fe/src/main/java/org/apache/doris/journal/JournalEntity.java
index d12dc07..e3538c0 100644
--- a/fe/src/main/java/org/apache/doris/journal/JournalEntity.java
+++ b/fe/src/main/java/org/apache/doris/journal/JournalEntity.java
@@ -69,6 +69,8 @@ import org.apache.doris.system.Backend;
 import org.apache.doris.system.Frontend;
 import org.apache.doris.transaction.TransactionState;
 
+import com.google.common.base.Preconditions;
+
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
@@ -109,63 +111,88 @@ public class JournalEntity implements Writable {
         data.write(out);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
-        boolean needRead = true;
         opCode = in.readShort();
+        // set it to true after the entity is truly read,
+        // to avoid someone forget to call read method.
+        boolean isRead = false;
         LOG.debug("get opcode: {}", opCode);
         switch (opCode) {
             case OperationType.OP_SAVE_NEXTID: {
                 data = new Text();
+                ((Text) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_SAVE_TRANSACTION_ID: {
                 data = new Text();
+                ((Text) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_CREATE_DB: {
                 data = new Database();
+                ((Database) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_DROP_DB: {
                 data = new Text();
+                ((Text) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_ALTER_DB:
             case OperationType.OP_RENAME_DB: {
                 data = new DatabaseInfo();
+                ((DatabaseInfo) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_CREATE_TABLE: {
                 data = new CreateTableInfo();
+                ((CreateTableInfo) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_DROP_TABLE: {
                 data = new DropInfo();
+                ((DropInfo) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_ADD_PARTITION: {
                 data = new PartitionPersistInfo();
+                ((PartitionPersistInfo) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_DROP_PARTITION: {
                 data = new DropPartitionInfo();
+                ((DropPartitionInfo) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_MODIFY_PARTITION: {
                 data = new ModifyPartitionInfo();
+                ((ModifyPartitionInfo) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_ERASE_DB:
             case OperationType.OP_ERASE_TABLE:
             case OperationType.OP_ERASE_PARTITION: {
                 data = new Text();
+                ((Text) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_RECOVER_DB:
             case OperationType.OP_RECOVER_TABLE:
             case OperationType.OP_RECOVER_PARTITION: {
                 data = new RecoverInfo();
+                ((RecoverInfo) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_START_ROLLUP:
@@ -179,31 +206,37 @@ public class JournalEntity implements Writable {
             case OperationType.OP_START_DECOMMISSION_BACKEND:
             case OperationType.OP_FINISH_DECOMMISSION_BACKEND: {
                 data = AlterJob.read(in);
-                needRead = false;
+                isRead = true;
                 break;
             }
             case OperationType.OP_DROP_ROLLUP: {
                 data = new DropInfo();
+                ((DropInfo) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_RENAME_TABLE:
             case OperationType.OP_RENAME_ROLLUP:
             case OperationType.OP_RENAME_PARTITION: {
                 data = new TableInfo();
+                ((TableInfo) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_BACKUP_JOB: {
                 data = BackupJob.read(in);
-                needRead = false;
+                isRead = true;
                 break;
             }
             case OperationType.OP_RESTORE_JOB: {
                 data = RestoreJob.read(in);
-                needRead = false;
+                isRead = true;
                 break;
             }
             case OperationType.OP_FINISH_CONSISTENCY_CHECK: {
                 data = new ConsistencyCheckInfo();
+                ((ConsistencyCheckInfo) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_LOAD_START:
@@ -213,21 +246,29 @@ public class JournalEntity implements Writable {
             case OperationType.OP_LOAD_DONE:
             case OperationType.OP_LOAD_CANCEL: {
                 data = new LoadJob();
+                ((LoadJob) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_EXPORT_CREATE:
                 data = new ExportJob();
+                ((ExportJob) data).readFields(in);
+                isRead = true;
                 break;
             case OperationType.OP_EXPORT_UPDATE_STATE:
                 data = new ExportJob.StateTransfer();
+                ((ExportJob.StateTransfer) data).readFields(in);
+                isRead = true;
                 break;
             case OperationType.OP_FINISH_SYNC_DELETE: {
                 data = new DeleteInfo();
+                ((DeleteInfo) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_FINISH_ASYNC_DELETE: {
                 data = AsyncDeleteJob.read(in);
-                needRead = false;
+                isRead = true;
                 break;
             }
             case OperationType.OP_ADD_REPLICA:
@@ -235,28 +276,34 @@ public class JournalEntity implements Writable {
             case OperationType.OP_DELETE_REPLICA:
             case OperationType.OP_CLEAR_ROLLUP_INFO: {
                 data = ReplicaPersistInfo.read(in);
-                needRead = false;
+                isRead = true;
                 break;
             }
             case OperationType.OP_ADD_BACKEND:
             case OperationType.OP_DROP_BACKEND:
             case OperationType.OP_BACKEND_STATE_CHANGE: {
                 data = new Backend();
+                ((Backend) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_ADD_FRONTEND:
             case OperationType.OP_ADD_FIRST_FRONTEND:
             case OperationType.OP_REMOVE_FRONTEND: {
                 data = new Frontend();
+                ((Frontend) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_SET_LOAD_ERROR_HUB: {
                 data = new LoadErrorHub.Param();
+                ((LoadErrorHub.Param) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_NEW_DROP_USER: {
                 data = UserIdentity.read(in);
-                needRead = false;
+                isRead = true;
                 break;
             }
             case OperationType.OP_CREATE_USER:
@@ -266,160 +313,182 @@ public class JournalEntity implements Writable {
             case OperationType.OP_CREATE_ROLE:
             case OperationType.OP_DROP_ROLE: {
                 data = PrivInfo.read(in);
-                needRead = false;
+                isRead = true;
                 break;
             }
             case OperationType.OP_UPDATE_USER_PROPERTY: {
                 data = UserPropertyInfo.read(in);
-                needRead = false;
+                isRead = true;
                 break;
             }
             case OperationType.OP_MASTER_INFO_CHANGE: {
                 data = new MasterInfo();
+                ((MasterInfo) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_TIMESTAMP: {
                 data = new Timestamp();
+                ((Timestamp) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_META_VERSION: {
                 data = new Text();
+                ((Text) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_GLOBAL_VARIABLE: {
                 data = new SessionVariable();
+                ((SessionVariable) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_CREATE_CLUSTER: {
                 data = Cluster.read(in);
-                needRead = false;
-                break;
-            }
-            case OperationType.OP_DROP_CLUSTER: {
-                data = new ClusterInfo();
+                isRead = true;
                 break;
             }
+            case OperationType.OP_DROP_CLUSTER:
             case OperationType.OP_EXPAND_CLUSTER: {
                 data = new ClusterInfo();
+                ((ClusterInfo) data).readFields(in);
+                isRead = true;
                 break;
             }
-            case OperationType.OP_LINK_CLUSTER: {
-                data = new BaseParam();
-                break;
-            }
+            case OperationType.OP_LINK_CLUSTER:
             case OperationType.OP_MIGRATE_CLUSTER: {
                 data = new BaseParam();
+                ((BaseParam) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_UPDATE_DB: {
                 data = new DatabaseInfo();
+                ((DatabaseInfo) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_DROP_LINKDB: {
                 data = new DropLinkDbAndUpdateDbInfo();
+                ((DropLinkDbAndUpdateDbInfo) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_ADD_BROKER:
             case OperationType.OP_DROP_BROKER: {
                 data = new BrokerMgr.ModifyBrokerInfo();
+                ((BrokerMgr.ModifyBrokerInfo) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_DROP_ALL_BROKER: {
                 data = new Text();
+                ((Text) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_UPDATE_CLUSTER_AND_BACKENDS: {
                 data = new BackendIdsUpdateInfo();
+                ((BackendIdsUpdateInfo) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_UPSERT_TRANSACTION_STATE:
             case OperationType.OP_DELETE_TRANSACTION_STATE: {
                 data = new TransactionState();
+                ((TransactionState) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_CREATE_REPOSITORY: {
                 data = Repository.read(in);
-                needRead = false;
+                isRead = true;
                 break;
             }
             case OperationType.OP_DROP_REPOSITORY: {
                 data = new Text();
+                ((Text) data).readFields(in);
+                isRead = true;
                 break;
             }
-
             case OperationType.OP_TRUNCATE_TABLE: {
                 data = TruncateTableInfo.read(in);
-                needRead = false;
+                isRead = true;
                 break;
             }
-
             case OperationType.OP_COLOCATE_ADD_TABLE:
             case OperationType.OP_COLOCATE_REMOVE_TABLE:
             case OperationType.OP_COLOCATE_BACKENDS_PER_BUCKETSEQ:
             case OperationType.OP_COLOCATE_MARK_UNSTABLE:
             case OperationType.OP_COLOCATE_MARK_STABLE: {
                 data = new ColocatePersistInfo();
+                ((ColocatePersistInfo) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_MODIFY_TABLE_COLOCATE: {
                 data = new TablePropertyInfo();
+                ((TablePropertyInfo) data).readFields(in);
+                isRead = true;
                 break;
             }
             case OperationType.OP_HEARTBEAT: {
                 data = HbPackage.read(in);
-                needRead = false;
+                isRead = true;
                 break;
             }
             case OperationType.OP_ADD_FUNCTION: {
                 data = Function.read(in);
-                needRead = false;
+                isRead = true;
                 break;
             }
             case OperationType.OP_DROP_FUNCTION: {
                 data = FunctionSearchDesc.read(in);
-                needRead = false;
+                isRead = true;
                 break;
             }
             case OperationType.OP_BACKEND_TABLETS_INFO: {
                 data = BackendTabletsInfo.read(in);
-                needRead = false;
+                isRead = true;
                 break;
             }
             case OperationType.OP_CREATE_ROUTINE_LOAD_JOB: {
                 data = RoutineLoadJob.read(in);
-                needRead = false;
+                isRead = true;
                 break;
             }
             case OperationType.OP_CHANGE_ROUTINE_LOAD_JOB:
             case OperationType.OP_REMOVE_ROUTINE_LOAD_JOB: {
                 data = RoutineLoadOperation.read(in);
-                needRead = false;
+                isRead = true;
                 break;
             }
             case OperationType.OP_CREATE_LOAD_JOB: {
                 data = org.apache.doris.load.loadv2.LoadJob.read(in);
-                needRead = false;
+                isRead = true;
                 break;
             }
             case OperationType.OP_END_LOAD_JOB: {
                 data = LoadJobFinalOperation.read(in);
-                needRead = false;
+                isRead = true;
                 break;
             }
             case OperationType.OP_CREATE_SMALL_FILE:
             case OperationType.OP_DROP_SMALL_FILE: {
                 data = SmallFile.read(in);
-                needRead = false;
+                isRead = true;
                 break;
             }
             case OperationType.OP_ALTER_JOB_V2: {
                 data = AlterJobV2.read(in);
-                needRead = false;
+                isRead = true;
                 break;
             }
             case OperationType.OP_MODIFY_DISTRIBUTION_TYPE: {
                 data = TableInfo.read(in);
-                needRead = false;
+                isRead = true;
                 break;
             }
             default: {
@@ -427,10 +496,7 @@ public class JournalEntity implements Writable {
                 LOG.error("UNKNOWN Operation Type {}", opCode, e);
                 throw e;
             }
-        }
-
-        if (needRead) {
-            data.readFields(in);
-        }
+        } // end switch
+        Preconditions.checkState(isRead);
     }
 }
diff --git a/fe/src/main/java/org/apache/doris/journal/bdbje/Timestamp.java b/fe/src/main/java/org/apache/doris/journal/bdbje/Timestamp.java
index 0723e55..9dce5c0 100644
--- a/fe/src/main/java/org/apache/doris/journal/bdbje/Timestamp.java
+++ b/fe/src/main/java/org/apache/doris/journal/bdbje/Timestamp.java
@@ -40,7 +40,6 @@ public class Timestamp implements Writable {
         out.writeLong(timestamp);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         timestamp = in.readLong();
     }
diff --git a/fe/src/main/java/org/apache/doris/load/AsyncDeleteJob.java b/fe/src/main/java/org/apache/doris/load/AsyncDeleteJob.java
index b8878a5..f8aacdc 100644
--- a/fe/src/main/java/org/apache/doris/load/AsyncDeleteJob.java
+++ b/fe/src/main/java/org/apache/doris/load/AsyncDeleteJob.java
@@ -227,7 +227,6 @@ public class AsyncDeleteJob implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         state = DeleteState.valueOf(Text.readString(in));
         jobId = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/load/BrokerFileGroup.java b/fe/src/main/java/org/apache/doris/load/BrokerFileGroup.java
index 78b74d1..c69268b 100644
--- a/fe/src/main/java/org/apache/doris/load/BrokerFileGroup.java
+++ b/fe/src/main/java/org/apache/doris/load/BrokerFileGroup.java
@@ -313,7 +313,6 @@ public class BrokerFileGroup implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         tableId = in.readLong();
         valueSeparator = Text.readString(in);
diff --git a/fe/src/main/java/org/apache/doris/load/BrokerLoadErrorHub.java b/fe/src/main/java/org/apache/doris/load/BrokerLoadErrorHub.java
index e17c517..3d37a86 100644
--- a/fe/src/main/java/org/apache/doris/load/BrokerLoadErrorHub.java
+++ b/fe/src/main/java/org/apache/doris/load/BrokerLoadErrorHub.java
@@ -72,7 +72,6 @@ public class BrokerLoadErrorHub extends LoadErrorHub {
             }
         }
 
-        @Override
         public void readFields(DataInput in) throws IOException {
             brokerName = Text.readString(in);
             path = Text.readString(in);
diff --git a/fe/src/main/java/org/apache/doris/load/DeleteInfo.java b/fe/src/main/java/org/apache/doris/load/DeleteInfo.java
index 0067b06..360976f 100644
--- a/fe/src/main/java/org/apache/doris/load/DeleteInfo.java
+++ b/fe/src/main/java/org/apache/doris/load/DeleteInfo.java
@@ -170,7 +170,6 @@ public class DeleteInfo implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         dbId = in.readLong();
         tableId = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/load/DppConfig.java b/fe/src/main/java/org/apache/doris/load/DppConfig.java
index 4303143..919d7e3 100644
--- a/fe/src/main/java/org/apache/doris/load/DppConfig.java
+++ b/fe/src/main/java/org/apache/doris/load/DppConfig.java
@@ -381,7 +381,6 @@ public class DppConfig implements Writable {
         Text.writeString(out, priority.name());
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         boolean readPaloPath = false;
         if (Catalog.getCurrentCatalogJournalVersion() >= FeMetaVersion.VERSION_12) {
diff --git a/fe/src/main/java/org/apache/doris/load/EtlJobInfo.java b/fe/src/main/java/org/apache/doris/load/EtlJobInfo.java
index cf3469b..c31d94f 100644
--- a/fe/src/main/java/org/apache/doris/load/EtlJobInfo.java
+++ b/fe/src/main/java/org/apache/doris/load/EtlJobInfo.java
@@ -48,7 +48,6 @@ public class EtlJobInfo implements Writable {
         jobStatus.write(out);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         jobStatus.readFields(in);
     }
diff --git a/fe/src/main/java/org/apache/doris/load/EtlStatus.java b/fe/src/main/java/org/apache/doris/load/EtlStatus.java
index 1df4dfc..c7ffd39 100644
--- a/fe/src/main/java/org/apache/doris/load/EtlStatus.java
+++ b/fe/src/main/java/org/apache/doris/load/EtlStatus.java
@@ -131,7 +131,6 @@ public class EtlStatus implements Writable {
             Text.writeString(out, entry.getValue());
         }
     }
-
     public void readFields(DataInput in) throws IOException {
         state = TEtlState.valueOf(Text.readString(in));
         trackingUrl = Text.readString(in);
diff --git a/fe/src/main/java/org/apache/doris/load/ExportFailMsg.java b/fe/src/main/java/org/apache/doris/load/ExportFailMsg.java
index c8e0dd6..d4a320f 100644
--- a/fe/src/main/java/org/apache/doris/load/ExportFailMsg.java
+++ b/fe/src/main/java/org/apache/doris/load/ExportFailMsg.java
@@ -73,7 +73,6 @@ public class ExportFailMsg implements Writable {
         Text.writeString(out, msg);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         cancelType = CancelType.valueOf(Text.readString(in));
         msg = Text.readString(in);
diff --git a/fe/src/main/java/org/apache/doris/load/ExportJob.java b/fe/src/main/java/org/apache/doris/load/ExportJob.java
index fbfd965..cc3dd68 100644
--- a/fe/src/main/java/org/apache/doris/load/ExportJob.java
+++ b/fe/src/main/java/org/apache/doris/load/ExportJob.java
@@ -606,7 +606,6 @@ public class ExportJob implements Writable {
         tableName.write(out);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         isReplayed = true;
         id = in.readLong();
@@ -706,7 +705,6 @@ public class ExportJob implements Writable {
             Text.writeString(out, state.name());
         }
 
-        @Override
         public void readFields(DataInput in) throws IOException {
             jobId = in.readLong();
             state = JobState.valueOf(Text.readString(in));
diff --git a/fe/src/main/java/org/apache/doris/load/FailMsg.java b/fe/src/main/java/org/apache/doris/load/FailMsg.java
index b60763d..91a4015 100644
--- a/fe/src/main/java/org/apache/doris/load/FailMsg.java
+++ b/fe/src/main/java/org/apache/doris/load/FailMsg.java
@@ -77,7 +77,6 @@ public class FailMsg implements Writable {
         Text.writeString(out, cancelType.name());
         Text.writeString(out, msg);
     }
-
     public void readFields(DataInput in) throws IOException {
         cancelType = CancelType.valueOf(Text.readString(in));
         msg = Text.readString(in);
diff --git a/fe/src/main/java/org/apache/doris/load/HadoopEtlJobInfo.java b/fe/src/main/java/org/apache/doris/load/HadoopEtlJobInfo.java
index bab5d5d..8ada1bf 100644
--- a/fe/src/main/java/org/apache/doris/load/HadoopEtlJobInfo.java
+++ b/fe/src/main/java/org/apache/doris/load/HadoopEtlJobInfo.java
@@ -87,7 +87,6 @@ public class HadoopEtlJobInfo extends EtlJobInfo {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
         cluster = Text.readString(in);
diff --git a/fe/src/main/java/org/apache/doris/load/LoadErrorHub.java b/fe/src/main/java/org/apache/doris/load/LoadErrorHub.java
index e04d91c..f2ce21c 100644
--- a/fe/src/main/java/org/apache/doris/load/LoadErrorHub.java
+++ b/fe/src/main/java/org/apache/doris/load/LoadErrorHub.java
@@ -195,7 +195,6 @@ public abstract class LoadErrorHub {
             }
         }
 
-        @Override
         public void readFields(DataInput in) throws IOException {
             type = HubType.valueOf(Text.readString(in));
             switch (type) {
diff --git a/fe/src/main/java/org/apache/doris/load/LoadJob.java b/fe/src/main/java/org/apache/doris/load/LoadJob.java
index 9516b10..564c758 100644
--- a/fe/src/main/java/org/apache/doris/load/LoadJob.java
+++ b/fe/src/main/java/org/apache/doris/load/LoadJob.java
@@ -828,7 +828,6 @@ public class LoadJob implements Writable {
             Text.writeString(out, tableName);
         }
     }
-
     public void readFields(DataInput in) throws IOException {
         long version = Catalog.getCurrentCatalogJournalVersion();
 
diff --git a/fe/src/main/java/org/apache/doris/load/MiniEtlJobInfo.java b/fe/src/main/java/org/apache/doris/load/MiniEtlJobInfo.java
index a46b12d..c2a0aa2 100644
--- a/fe/src/main/java/org/apache/doris/load/MiniEtlJobInfo.java
+++ b/fe/src/main/java/org/apache/doris/load/MiniEtlJobInfo.java
@@ -67,7 +67,6 @@ public class MiniEtlJobInfo extends EtlJobInfo {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
         int taskNum = in.readInt();
diff --git a/fe/src/main/java/org/apache/doris/load/MiniEtlTaskInfo.java b/fe/src/main/java/org/apache/doris/load/MiniEtlTaskInfo.java
index 539e096..1e32b14 100644
--- a/fe/src/main/java/org/apache/doris/load/MiniEtlTaskInfo.java
+++ b/fe/src/main/java/org/apache/doris/load/MiniEtlTaskInfo.java
@@ -63,7 +63,6 @@ public class MiniEtlTaskInfo implements Writable {
         out.writeLong(tableId);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         id = in.readLong();
         backendId = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/load/MysqlLoadErrorHub.java b/fe/src/main/java/org/apache/doris/load/MysqlLoadErrorHub.java
index da656b2..7a662dc 100644
--- a/fe/src/main/java/org/apache/doris/load/MysqlLoadErrorHub.java
+++ b/fe/src/main/java/org/apache/doris/load/MysqlLoadErrorHub.java
@@ -122,7 +122,6 @@ public class MysqlLoadErrorHub extends LoadErrorHub {
             Text.writeString(out, table);
         }
 
-        @Override
         public void readFields(DataInput in) throws IOException {
             host = Text.readString(in);
             port = in.readInt();
diff --git a/fe/src/main/java/org/apache/doris/load/PartitionLoadInfo.java b/fe/src/main/java/org/apache/doris/load/PartitionLoadInfo.java
index 11b0bf5..76b9437 100644
--- a/fe/src/main/java/org/apache/doris/load/PartitionLoadInfo.java
+++ b/fe/src/main/java/org/apache/doris/load/PartitionLoadInfo.java
@@ -88,7 +88,6 @@ public class PartitionLoadInfo implements Writable {
 
         out.writeBoolean(needLoad);
     }
- 
     public void readFields(DataInput in) throws IOException {
         version = in.readLong();
         versionHash = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/load/PullLoadSourceInfo.java b/fe/src/main/java/org/apache/doris/load/PullLoadSourceInfo.java
index e6f019f..4fc3497 100644
--- a/fe/src/main/java/org/apache/doris/load/PullLoadSourceInfo.java
+++ b/fe/src/main/java/org/apache/doris/load/PullLoadSourceInfo.java
@@ -93,7 +93,6 @@ public class PullLoadSourceInfo implements Writable {
         out.writeInt(0);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         // The pull load source info also need to be replayed
         // because size of file groups in old broker load is more then zero.
diff --git a/fe/src/main/java/org/apache/doris/load/Source.java b/fe/src/main/java/org/apache/doris/load/Source.java
index 3e5f879..ae8fdf6 100644
--- a/fe/src/main/java/org/apache/doris/load/Source.java
+++ b/fe/src/main/java/org/apache/doris/load/Source.java
@@ -171,7 +171,6 @@ public class Source implements Writable {
             }
         }
     }
-
     public void readFields(DataInput in) throws IOException {
         int count = 0;
         
diff --git a/fe/src/main/java/org/apache/doris/load/TableLoadInfo.java b/fe/src/main/java/org/apache/doris/load/TableLoadInfo.java
index 2778792..4520cf5 100644
--- a/fe/src/main/java/org/apache/doris/load/TableLoadInfo.java
+++ b/fe/src/main/java/org/apache/doris/load/TableLoadInfo.java
@@ -87,7 +87,6 @@ public class TableLoadInfo implements Writable {
         }
     }
  
-    @Override
     public void readFields(DataInput in) throws IOException {
         int count = in.readInt();
         for (int i = 0; i < count; i++) {
diff --git a/fe/src/main/java/org/apache/doris/load/TabletLoadInfo.java b/fe/src/main/java/org/apache/doris/load/TabletLoadInfo.java
index 66a1a8a..c795a81 100644
--- a/fe/src/main/java/org/apache/doris/load/TabletLoadInfo.java
+++ b/fe/src/main/java/org/apache/doris/load/TabletLoadInfo.java
@@ -69,7 +69,6 @@ public class TabletLoadInfo implements Writable {
             out.writeLong(fileSize);
         }
     }
-
     public void readFields(DataInput in) throws IOException {
         if (in.readBoolean()) {
             filePath = Text.readString(in).intern();
diff --git a/fe/src/main/java/org/apache/doris/load/loadv2/BrokerLoadJob.java b/fe/src/main/java/org/apache/doris/load/loadv2/BrokerLoadJob.java
index 4614727..f0097e6 100644
--- a/fe/src/main/java/org/apache/doris/load/loadv2/BrokerLoadJob.java
+++ b/fe/src/main/java/org/apache/doris/load/loadv2/BrokerLoadJob.java
@@ -528,7 +528,6 @@ public class BrokerLoadJob extends LoadJob {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
         brokerDesc = BrokerDesc.read(in);
diff --git a/fe/src/main/java/org/apache/doris/load/loadv2/InsertLoadJob.java b/fe/src/main/java/org/apache/doris/load/loadv2/InsertLoadJob.java
index 2dbd66f..7a72e21 100644
--- a/fe/src/main/java/org/apache/doris/load/loadv2/InsertLoadJob.java
+++ b/fe/src/main/java/org/apache/doris/load/loadv2/InsertLoadJob.java
@@ -113,7 +113,6 @@ public class InsertLoadJob extends LoadJob {
         out.writeLong(tableId);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
         tableId = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/load/loadv2/LoadJob.java b/fe/src/main/java/org/apache/doris/load/loadv2/LoadJob.java
index 184e4fc..5b773af 100644
--- a/fe/src/main/java/org/apache/doris/load/loadv2/LoadJob.java
+++ b/fe/src/main/java/org/apache/doris/load/loadv2/LoadJob.java
@@ -953,7 +953,6 @@ public abstract class LoadJob extends AbstractTxnStateChangeCallback implements
         Text.writeString(out, timezone);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         if (!isJobTypeRead) {
             jobType = EtlJobType.valueOf(Text.readString(in));
diff --git a/fe/src/main/java/org/apache/doris/load/loadv2/LoadJobFinalOperation.java b/fe/src/main/java/org/apache/doris/load/loadv2/LoadJobFinalOperation.java
index df8ea0b..0180df8 100644
--- a/fe/src/main/java/org/apache/doris/load/loadv2/LoadJobFinalOperation.java
+++ b/fe/src/main/java/org/apache/doris/load/loadv2/LoadJobFinalOperation.java
@@ -103,7 +103,6 @@ public class LoadJobFinalOperation extends TxnCommitAttachment implements Writab
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
         id = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/load/loadv2/LoadManager.java b/fe/src/main/java/org/apache/doris/load/loadv2/LoadManager.java
index b4e542f..7f9c343 100644
--- a/fe/src/main/java/org/apache/doris/load/loadv2/LoadManager.java
+++ b/fe/src/main/java/org/apache/doris/load/loadv2/LoadManager.java
@@ -697,7 +697,6 @@ public class LoadManager implements Writable{
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         int size = in.readInt();
         for (int i = 0; i < size; i++) {
diff --git a/fe/src/main/java/org/apache/doris/load/loadv2/MiniLoadJob.java b/fe/src/main/java/org/apache/doris/load/loadv2/MiniLoadJob.java
index 77b4fc1..94d4707 100644
--- a/fe/src/main/java/org/apache/doris/load/loadv2/MiniLoadJob.java
+++ b/fe/src/main/java/org/apache/doris/load/loadv2/MiniLoadJob.java
@@ -125,7 +125,6 @@ public class MiniLoadJob extends LoadJob {
         Text.writeString(out, tableName);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
         tableName = Text.readString(in);
diff --git a/fe/src/main/java/org/apache/doris/load/loadv2/MiniLoadTxnCommitAttachment.java b/fe/src/main/java/org/apache/doris/load/loadv2/MiniLoadTxnCommitAttachment.java
index 6934853..de66082 100644
--- a/fe/src/main/java/org/apache/doris/load/loadv2/MiniLoadTxnCommitAttachment.java
+++ b/fe/src/main/java/org/apache/doris/load/loadv2/MiniLoadTxnCommitAttachment.java
@@ -71,7 +71,6 @@ public class MiniLoadTxnCommitAttachment extends TxnCommitAttachment {
 
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
         filteredRows = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/load/routineload/KafkaProgress.java b/fe/src/main/java/org/apache/doris/load/routineload/KafkaProgress.java
index 8901f25..8ef5f46 100644
--- a/fe/src/main/java/org/apache/doris/load/routineload/KafkaProgress.java
+++ b/fe/src/main/java/org/apache/doris/load/routineload/KafkaProgress.java
@@ -139,7 +139,6 @@ public class KafkaProgress extends RoutineLoadProgress {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
         int size = in.readInt();
diff --git a/fe/src/main/java/org/apache/doris/load/routineload/KafkaRoutineLoadJob.java b/fe/src/main/java/org/apache/doris/load/routineload/KafkaRoutineLoadJob.java
index 62a4bf6..7d3660d 100644
--- a/fe/src/main/java/org/apache/doris/load/routineload/KafkaRoutineLoadJob.java
+++ b/fe/src/main/java/org/apache/doris/load/routineload/KafkaRoutineLoadJob.java
@@ -465,7 +465,6 @@ public class KafkaRoutineLoadJob extends RoutineLoadJob {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
         brokerList = Text.readString(in);
diff --git a/fe/src/main/java/org/apache/doris/load/routineload/RLTaskTxnCommitAttachment.java b/fe/src/main/java/org/apache/doris/load/routineload/RLTaskTxnCommitAttachment.java
index ef6a7f3..70d67e7 100644
--- a/fe/src/main/java/org/apache/doris/load/routineload/RLTaskTxnCommitAttachment.java
+++ b/fe/src/main/java/org/apache/doris/load/routineload/RLTaskTxnCommitAttachment.java
@@ -126,7 +126,6 @@ public class RLTaskTxnCommitAttachment extends TxnCommitAttachment {
         progress.write(out);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
         filteredRows = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/load/routineload/RoutineLoadJob.java b/fe/src/main/java/org/apache/doris/load/routineload/RoutineLoadJob.java
index fe50d50..4fdedf2 100644
--- a/fe/src/main/java/org/apache/doris/load/routineload/RoutineLoadJob.java
+++ b/fe/src/main/java/org/apache/doris/load/routineload/RoutineLoadJob.java
@@ -1224,7 +1224,6 @@ public abstract class RoutineLoadJob extends AbstractTxnStateChangeCallback impl
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         if (!isTypeRead) {
             dataSourceType = LoadDataSourceType.valueOf(Text.readString(in));
diff --git a/fe/src/main/java/org/apache/doris/load/routineload/RoutineLoadManager.java b/fe/src/main/java/org/apache/doris/load/routineload/RoutineLoadManager.java
index 6113846..f33add0 100644
--- a/fe/src/main/java/org/apache/doris/load/routineload/RoutineLoadManager.java
+++ b/fe/src/main/java/org/apache/doris/load/routineload/RoutineLoadManager.java
@@ -607,7 +607,6 @@ public class RoutineLoadManager implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         int size = in.readInt();
         for (int i = 0; i < size; i++) {
diff --git a/fe/src/main/java/org/apache/doris/load/routineload/RoutineLoadProgress.java b/fe/src/main/java/org/apache/doris/load/routineload/RoutineLoadProgress.java
index 344fdc1..c8948d4 100644
--- a/fe/src/main/java/org/apache/doris/load/routineload/RoutineLoadProgress.java
+++ b/fe/src/main/java/org/apache/doris/load/routineload/RoutineLoadProgress.java
@@ -61,7 +61,6 @@ public abstract class RoutineLoadProgress implements Writable {
         Text.writeString(out, loadDataSourceType.name());
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         if (!isTypeRead) {
             loadDataSourceType = LoadDataSourceType.valueOf(Text.readString(in));
diff --git a/fe/src/main/java/org/apache/doris/mysql/privilege/DbPrivEntry.java b/fe/src/main/java/org/apache/doris/mysql/privilege/DbPrivEntry.java
index 21a438c..746f4d5 100644
--- a/fe/src/main/java/org/apache/doris/mysql/privilege/DbPrivEntry.java
+++ b/fe/src/main/java/org/apache/doris/mysql/privilege/DbPrivEntry.java
@@ -141,7 +141,6 @@ public class DbPrivEntry extends PrivEntry {
         isClassNameWrote = false;
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
 
diff --git a/fe/src/main/java/org/apache/doris/mysql/privilege/GlobalPrivEntry.java b/fe/src/main/java/org/apache/doris/mysql/privilege/GlobalPrivEntry.java
index f35d7a3..77770e9 100644
--- a/fe/src/main/java/org/apache/doris/mysql/privilege/GlobalPrivEntry.java
+++ b/fe/src/main/java/org/apache/doris/mysql/privilege/GlobalPrivEntry.java
@@ -156,7 +156,6 @@ public class GlobalPrivEntry extends PrivEntry {
         isClassNameWrote = false;
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
         int passwordLen = in.readInt();
diff --git a/fe/src/main/java/org/apache/doris/mysql/privilege/PaloAuth.java b/fe/src/main/java/org/apache/doris/mysql/privilege/PaloAuth.java
index fda81b2..cf87486 100644
--- a/fe/src/main/java/org/apache/doris/mysql/privilege/PaloAuth.java
+++ b/fe/src/main/java/org/apache/doris/mysql/privilege/PaloAuth.java
@@ -1100,7 +1100,6 @@ public class PaloAuth implements Writable {
         propertyMgr.write(out);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         roleManager = RoleManager.read(in);
         userPrivTable = (UserPrivTable) PrivTable.read(in);
diff --git a/fe/src/main/java/org/apache/doris/mysql/privilege/PaloRole.java b/fe/src/main/java/org/apache/doris/mysql/privilege/PaloRole.java
index 0eb53ba..e960c79 100644
--- a/fe/src/main/java/org/apache/doris/mysql/privilege/PaloRole.java
+++ b/fe/src/main/java/org/apache/doris/mysql/privilege/PaloRole.java
@@ -121,7 +121,6 @@ public class PaloRole implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         roleName = Text.readString(in);
         int size = in.readInt();
diff --git a/fe/src/main/java/org/apache/doris/mysql/privilege/PrivBitSet.java b/fe/src/main/java/org/apache/doris/mysql/privilege/PrivBitSet.java
index e53f843..fc99da0 100644
--- a/fe/src/main/java/org/apache/doris/mysql/privilege/PrivBitSet.java
+++ b/fe/src/main/java/org/apache/doris/mysql/privilege/PrivBitSet.java
@@ -152,7 +152,6 @@ public class PrivBitSet implements Writable {
         out.writeLong(set);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         set = in.readLong();
     }
diff --git a/fe/src/main/java/org/apache/doris/mysql/privilege/PrivEntry.java b/fe/src/main/java/org/apache/doris/mysql/privilege/PrivEntry.java
index e723f58..2143508 100644
--- a/fe/src/main/java/org/apache/doris/mysql/privilege/PrivEntry.java
+++ b/fe/src/main/java/org/apache/doris/mysql/privilege/PrivEntry.java
@@ -224,7 +224,6 @@ public abstract class PrivEntry implements Comparable<PrivEntry>, Writable {
         isClassNameWrote = false;
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         origHost = Text.readString(in);
         try {
diff --git a/fe/src/main/java/org/apache/doris/mysql/privilege/PrivTable.java b/fe/src/main/java/org/apache/doris/mysql/privilege/PrivTable.java
index 0668a10..423dfed 100644
--- a/fe/src/main/java/org/apache/doris/mysql/privilege/PrivTable.java
+++ b/fe/src/main/java/org/apache/doris/mysql/privilege/PrivTable.java
@@ -247,7 +247,6 @@ public abstract class PrivTable implements Writable {
         isClassNameWrote = false;
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         int size = in.readInt();
         for (int i = 0; i < size; i++) {
diff --git a/fe/src/main/java/org/apache/doris/mysql/privilege/RoleManager.java b/fe/src/main/java/org/apache/doris/mysql/privilege/RoleManager.java
index a325c9e..d2dac35 100644
--- a/fe/src/main/java/org/apache/doris/mysql/privilege/RoleManager.java
+++ b/fe/src/main/java/org/apache/doris/mysql/privilege/RoleManager.java
@@ -170,7 +170,6 @@ public class RoleManager implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         int size = in.readInt();
         for (int i = 0; i < size; i++) {
diff --git a/fe/src/main/java/org/apache/doris/mysql/privilege/TablePrivEntry.java b/fe/src/main/java/org/apache/doris/mysql/privilege/TablePrivEntry.java
index c8f69ab..2fcd1e9 100644
--- a/fe/src/main/java/org/apache/doris/mysql/privilege/TablePrivEntry.java
+++ b/fe/src/main/java/org/apache/doris/mysql/privilege/TablePrivEntry.java
@@ -139,7 +139,6 @@ public class TablePrivEntry extends DbPrivEntry {
         isClassNameWrote = false;
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
 
diff --git a/fe/src/main/java/org/apache/doris/mysql/privilege/UserProperty.java b/fe/src/main/java/org/apache/doris/mysql/privilege/UserProperty.java
index e70bbfe..f08090f 100644
--- a/fe/src/main/java/org/apache/doris/mysql/privilege/UserProperty.java
+++ b/fe/src/main/java/org/apache/doris/mysql/privilege/UserProperty.java
@@ -429,7 +429,6 @@ public class UserProperty implements Writable {
 
         whiteList.write(out);
     }
-
     public void readFields(DataInput in) throws IOException {
         if (Catalog.getCurrentCatalogJournalVersion() < FeMetaVersion.VERSION_43) {
             // consume the flag of empty user name
diff --git a/fe/src/main/java/org/apache/doris/mysql/privilege/UserPropertyInfo.java b/fe/src/main/java/org/apache/doris/mysql/privilege/UserPropertyInfo.java
index 96723be..4912757 100644
--- a/fe/src/main/java/org/apache/doris/mysql/privilege/UserPropertyInfo.java
+++ b/fe/src/main/java/org/apache/doris/mysql/privilege/UserPropertyInfo.java
@@ -66,7 +66,6 @@ public class UserPropertyInfo implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         user = Text.readString(in);
         int size = in.readInt();
diff --git a/fe/src/main/java/org/apache/doris/mysql/privilege/UserPropertyMgr.java b/fe/src/main/java/org/apache/doris/mysql/privilege/UserPropertyMgr.java
index 8d8dbf3..ec27f64 100644
--- a/fe/src/main/java/org/apache/doris/mysql/privilege/UserPropertyMgr.java
+++ b/fe/src/main/java/org/apache/doris/mysql/privilege/UserPropertyMgr.java
@@ -243,7 +243,6 @@ public class UserPropertyMgr implements Writable {
         out.writeLong(resourceVersion.get());
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         int size = in.readInt();
         for (int i = 0; i < size; ++i) {
diff --git a/fe/src/main/java/org/apache/doris/mysql/privilege/UserResource.java b/fe/src/main/java/org/apache/doris/mysql/privilege/UserResource.java
index d178a32..2257933 100644
--- a/fe/src/main/java/org/apache/doris/mysql/privilege/UserResource.java
+++ b/fe/src/main/java/org/apache/doris/mysql/privilege/UserResource.java
@@ -131,7 +131,6 @@ public class UserResource implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         resource = ResourceGroup.readIn(in);
         ImmutableSortedMap.Builder<String, AtomicInteger> builder =
diff --git a/fe/src/main/java/org/apache/doris/mysql/privilege/WhiteList.java b/fe/src/main/java/org/apache/doris/mysql/privilege/WhiteList.java
index 0df1c19..eb2ca80 100644
--- a/fe/src/main/java/org/apache/doris/mysql/privilege/WhiteList.java
+++ b/fe/src/main/java/org/apache/doris/mysql/privilege/WhiteList.java
@@ -128,7 +128,6 @@ public class WhiteList implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         if (Catalog.getCurrentCatalogJournalVersion() >= FeMetaVersion.VERSION_43) {
             if (Catalog.getCurrentCatalogJournalVersion() < FeMetaVersion.VERSION_69) {
diff --git a/fe/src/main/java/org/apache/doris/persist/BackendIdsUpdateInfo.java b/fe/src/main/java/org/apache/doris/persist/BackendIdsUpdateInfo.java
index 7492ecb..817cbbd 100644
--- a/fe/src/main/java/org/apache/doris/persist/BackendIdsUpdateInfo.java
+++ b/fe/src/main/java/org/apache/doris/persist/BackendIdsUpdateInfo.java
@@ -44,7 +44,6 @@ public class BackendIdsUpdateInfo implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         int backendCount = in.readInt();
         while (backendCount-- > 0) {
diff --git a/fe/src/main/java/org/apache/doris/persist/BackendTabletsInfo.java b/fe/src/main/java/org/apache/doris/persist/BackendTabletsInfo.java
index 325bd84..2cf9b7f 100644
--- a/fe/src/main/java/org/apache/doris/persist/BackendTabletsInfo.java
+++ b/fe/src/main/java/org/apache/doris/persist/BackendTabletsInfo.java
@@ -88,7 +88,6 @@ public class BackendTabletsInfo implements Writable {
         out.writeBoolean(false);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         backendId = in.readLong();
 
diff --git a/fe/src/main/java/org/apache/doris/persist/CloneInfo.java b/fe/src/main/java/org/apache/doris/persist/CloneInfo.java
index 4f18e2d..5d22eca 100644
--- a/fe/src/main/java/org/apache/doris/persist/CloneInfo.java
+++ b/fe/src/main/java/org/apache/doris/persist/CloneInfo.java
@@ -138,7 +138,6 @@ public class CloneInfo implements Writable {
         Text.writeString(out, type.toString());
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         dbId = in.readLong();
         tableId = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/persist/ClusterInfo.java b/fe/src/main/java/org/apache/doris/persist/ClusterInfo.java
index 8b6f410..9fb3d6c 100644
--- a/fe/src/main/java/org/apache/doris/persist/ClusterInfo.java
+++ b/fe/src/main/java/org/apache/doris/persist/ClusterInfo.java
@@ -77,7 +77,6 @@ public class ClusterInfo implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         clusterName = Text.readString(in);
         clusterId = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/persist/ColocatePersistInfo.java b/fe/src/main/java/org/apache/doris/persist/ColocatePersistInfo.java
index 557a1c5..b25b3fb 100644
--- a/fe/src/main/java/org/apache/doris/persist/ColocatePersistInfo.java
+++ b/fe/src/main/java/org/apache/doris/persist/ColocatePersistInfo.java
@@ -97,7 +97,6 @@ public class ColocatePersistInfo implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         tableId = in.readLong();
         if (Catalog.getCurrentCatalogJournalVersion() < FeMetaVersion.VERSION_55) {
diff --git a/fe/src/main/java/org/apache/doris/persist/ConsistencyCheckInfo.java b/fe/src/main/java/org/apache/doris/persist/ConsistencyCheckInfo.java
index ef4eb12..ee5ed9d 100644
--- a/fe/src/main/java/org/apache/doris/persist/ConsistencyCheckInfo.java
+++ b/fe/src/main/java/org/apache/doris/persist/ConsistencyCheckInfo.java
@@ -109,7 +109,6 @@ public class ConsistencyCheckInfo implements Writable {
         out.writeBoolean(isConsistent);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         dbId = in.readLong();
         tableId = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/persist/CreateTableInfo.java b/fe/src/main/java/org/apache/doris/persist/CreateTableInfo.java
index 16a7202..b9eff7e 100644
--- a/fe/src/main/java/org/apache/doris/persist/CreateTableInfo.java
+++ b/fe/src/main/java/org/apache/doris/persist/CreateTableInfo.java
@@ -59,7 +59,6 @@ public class CreateTableInfo implements Writable {
         Text.writeString(out, dbName);
         table.write(out);
     }
- 
     public void readFields(DataInput in) throws IOException {
         if (Catalog.getCurrentCatalogJournalVersion() < FeMetaVersion.VERSION_30) {
             dbName = ClusterNamespace.getFullName(SystemInfoService.DEFAULT_CLUSTER, Text.readString(in));
diff --git a/fe/src/main/java/org/apache/doris/persist/DatabaseInfo.java b/fe/src/main/java/org/apache/doris/persist/DatabaseInfo.java
index 37eb417..73f7235 100644
--- a/fe/src/main/java/org/apache/doris/persist/DatabaseInfo.java
+++ b/fe/src/main/java/org/apache/doris/persist/DatabaseInfo.java
@@ -79,7 +79,6 @@ public class DatabaseInfo implements Writable {
         Text.writeString(out, this.dbState.name());
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         this.dbName = Text.readString(in);
         if (Catalog.getCurrentCatalogJournalVersion() >= FeMetaVersion.VERSION_10) {
diff --git a/fe/src/main/java/org/apache/doris/persist/DropInfo.java b/fe/src/main/java/org/apache/doris/persist/DropInfo.java
index 676acf5..8b72074 100644
--- a/fe/src/main/java/org/apache/doris/persist/DropInfo.java
+++ b/fe/src/main/java/org/apache/doris/persist/DropInfo.java
@@ -62,7 +62,6 @@ public class DropInfo implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         dbId = in.readLong();
         tableId = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/persist/DropLinkDbAndUpdateDbInfo.java b/fe/src/main/java/org/apache/doris/persist/DropLinkDbAndUpdateDbInfo.java
index 4372a35..7fabd08 100644
--- a/fe/src/main/java/org/apache/doris/persist/DropLinkDbAndUpdateDbInfo.java
+++ b/fe/src/main/java/org/apache/doris/persist/DropLinkDbAndUpdateDbInfo.java
@@ -73,7 +73,6 @@ public class DropLinkDbAndUpdateDbInfo implements Writable {
         linkDbInfo.write(out);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         state = DbState.valueOf(Text.readString(in));
         linkDbInfo.readFields(in);
diff --git a/fe/src/main/java/org/apache/doris/persist/DropPartitionInfo.java b/fe/src/main/java/org/apache/doris/persist/DropPartitionInfo.java
index a52a03f..9077b5e 100644
--- a/fe/src/main/java/org/apache/doris/persist/DropPartitionInfo.java
+++ b/fe/src/main/java/org/apache/doris/persist/DropPartitionInfo.java
@@ -55,7 +55,6 @@ public class DropPartitionInfo implements Writable {
         out.writeLong(tableId);
         Text.writeString(out, partitionName);
     }
- 
     public void readFields(DataInput in) throws IOException {
         dbId = in.readLong();
         tableId = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/persist/HbPackage.java b/fe/src/main/java/org/apache/doris/persist/HbPackage.java
index b711dd8..17eb7bd 100644
--- a/fe/src/main/java/org/apache/doris/persist/HbPackage.java
+++ b/fe/src/main/java/org/apache/doris/persist/HbPackage.java
@@ -57,7 +57,6 @@ public class HbPackage implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         int size = in.readInt();
         for (int i = 0; i < size; i++) {
diff --git a/fe/src/main/java/org/apache/doris/persist/LinkDbInfo.java b/fe/src/main/java/org/apache/doris/persist/LinkDbInfo.java
index 1924fd4..fcbb9f3 100644
--- a/fe/src/main/java/org/apache/doris/persist/LinkDbInfo.java
+++ b/fe/src/main/java/org/apache/doris/persist/LinkDbInfo.java
@@ -64,7 +64,6 @@ public class LinkDbInfo implements Writable {
 
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         cluster = Text.readString(in);
         name = Text.readString(in);
diff --git a/fe/src/main/java/org/apache/doris/persist/ModifyPartitionInfo.java b/fe/src/main/java/org/apache/doris/persist/ModifyPartitionInfo.java
index c235888..fb72311 100644
--- a/fe/src/main/java/org/apache/doris/persist/ModifyPartitionInfo.java
+++ b/fe/src/main/java/org/apache/doris/persist/ModifyPartitionInfo.java
@@ -87,7 +87,6 @@ public class ModifyPartitionInfo implements Writable {
         out.writeShort(replicationNum);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         dbId = in.readLong();
         tableId = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/persist/PartitionPersistInfo.java b/fe/src/main/java/org/apache/doris/persist/PartitionPersistInfo.java
index 35debd6..9ca1711 100644
--- a/fe/src/main/java/org/apache/doris/persist/PartitionPersistInfo.java
+++ b/fe/src/main/java/org/apache/doris/persist/PartitionPersistInfo.java
@@ -86,7 +86,6 @@ public class PartitionPersistInfo implements Writable {
         dataProperty.write(out);
         out.writeShort(replicationNum);
     }
- 
     public void readFields(DataInput in) throws IOException {
         dbId = in.readLong();
         tableId = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/persist/PrivInfo.java b/fe/src/main/java/org/apache/doris/persist/PrivInfo.java
index bcf2e99..46b5a0f 100644
--- a/fe/src/main/java/org/apache/doris/persist/PrivInfo.java
+++ b/fe/src/main/java/org/apache/doris/persist/PrivInfo.java
@@ -114,7 +114,6 @@ public class PrivInfo implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         if (in.readBoolean()) {
             userIdent = UserIdentity.read(in);
diff --git a/fe/src/main/java/org/apache/doris/persist/RecoverInfo.java b/fe/src/main/java/org/apache/doris/persist/RecoverInfo.java
index e3cde33..871f6b4 100644
--- a/fe/src/main/java/org/apache/doris/persist/RecoverInfo.java
+++ b/fe/src/main/java/org/apache/doris/persist/RecoverInfo.java
@@ -57,7 +57,6 @@ public class RecoverInfo implements Writable {
         out.writeLong(partitionId);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         dbId = in.readLong();
         tableId = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/persist/ReplicaPersistInfo.java b/fe/src/main/java/org/apache/doris/persist/ReplicaPersistInfo.java
index 6000512..a3594f1 100644
--- a/fe/src/main/java/org/apache/doris/persist/ReplicaPersistInfo.java
+++ b/fe/src/main/java/org/apache/doris/persist/ReplicaPersistInfo.java
@@ -317,7 +317,6 @@ public class ReplicaPersistInfo implements Writable {
         out.writeInt(schemaHash);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         
         dbId = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/persist/RoutineLoadOperation.java b/fe/src/main/java/org/apache/doris/persist/RoutineLoadOperation.java
index 0d9665b..b8daa48 100644
--- a/fe/src/main/java/org/apache/doris/persist/RoutineLoadOperation.java
+++ b/fe/src/main/java/org/apache/doris/persist/RoutineLoadOperation.java
@@ -57,7 +57,6 @@ public class RoutineLoadOperation implements Writable {
         Text.writeString(out, jobState.name());
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         id = in.readLong();
         jobState = JobState.valueOf(Text.readString(in));
diff --git a/fe/src/main/java/org/apache/doris/persist/TableInfo.java b/fe/src/main/java/org/apache/doris/persist/TableInfo.java
index 8529327..2d08a8a 100644
--- a/fe/src/main/java/org/apache/doris/persist/TableInfo.java
+++ b/fe/src/main/java/org/apache/doris/persist/TableInfo.java
@@ -108,7 +108,6 @@ public class TableInfo implements Writable {
         Text.writeString(out, newPartitionName);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         dbId = in.readLong();
         tableId = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/persist/TablePropertyInfo.java b/fe/src/main/java/org/apache/doris/persist/TablePropertyInfo.java
index 5df470d..d3d0442 100644
--- a/fe/src/main/java/org/apache/doris/persist/TablePropertyInfo.java
+++ b/fe/src/main/java/org/apache/doris/persist/TablePropertyInfo.java
@@ -77,7 +77,6 @@ public class TablePropertyInfo implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         long dbId = -1;
         if (Catalog.getCurrentCatalogJournalVersion() < FeMetaVersion.VERSION_55) {
diff --git a/fe/src/main/java/org/apache/doris/persist/TruncateTableInfo.java b/fe/src/main/java/org/apache/doris/persist/TruncateTableInfo.java
index bad83e9..870eac2 100644
--- a/fe/src/main/java/org/apache/doris/persist/TruncateTableInfo.java
+++ b/fe/src/main/java/org/apache/doris/persist/TruncateTableInfo.java
@@ -71,7 +71,6 @@ public class TruncateTableInfo implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         dbId = in.readLong();
         tblId = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/qe/SessionVariable.java b/fe/src/main/java/org/apache/doris/qe/SessionVariable.java
index c719e86..68ae2a1 100644
--- a/fe/src/main/java/org/apache/doris/qe/SessionVariable.java
+++ b/fe/src/main/java/org/apache/doris/qe/SessionVariable.java
@@ -440,7 +440,6 @@ public class SessionVariable implements Serializable, Writable {
         Text.writeString(out, root.toString());
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         if (Catalog.getCurrentCatalogJournalVersion() < FeMetaVersion.VERSION_67) {
             codegenLevel = in.readInt();
diff --git a/fe/src/main/java/org/apache/doris/system/Backend.java b/fe/src/main/java/org/apache/doris/system/Backend.java
index e86530c..861bc19 100644
--- a/fe/src/main/java/org/apache/doris/system/Backend.java
+++ b/fe/src/main/java/org/apache/doris/system/Backend.java
@@ -468,7 +468,6 @@ public class Backend implements Writable {
         out.writeInt(brpcPort.get());
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         id = in.readLong();
         host = Text.readString(in);
diff --git a/fe/src/main/java/org/apache/doris/system/BackendHbResponse.java b/fe/src/main/java/org/apache/doris/system/BackendHbResponse.java
index 43b2185..cca375f 100644
--- a/fe/src/main/java/org/apache/doris/system/BackendHbResponse.java
+++ b/fe/src/main/java/org/apache/doris/system/BackendHbResponse.java
@@ -84,7 +84,6 @@ public class BackendHbResponse extends HeartbeatResponse implements Writable {
         out.writeInt(brpcPort);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
         beId = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/system/BrokerHbResponse.java b/fe/src/main/java/org/apache/doris/system/BrokerHbResponse.java
index e6ae49b..dda679a 100644
--- a/fe/src/main/java/org/apache/doris/system/BrokerHbResponse.java
+++ b/fe/src/main/java/org/apache/doris/system/BrokerHbResponse.java
@@ -81,7 +81,6 @@ public class BrokerHbResponse extends HeartbeatResponse implements Writable {
         out.writeInt(port);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
         name = Text.readString(in);
diff --git a/fe/src/main/java/org/apache/doris/system/Frontend.java b/fe/src/main/java/org/apache/doris/system/Frontend.java
index 31b4608..feb123c 100644
--- a/fe/src/main/java/org/apache/doris/system/Frontend.java
+++ b/fe/src/main/java/org/apache/doris/system/Frontend.java
@@ -127,7 +127,6 @@ public class Frontend implements Writable {
         Text.writeString(out, nodeName);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         role = FrontendNodeType.valueOf(Text.readString(in));
         if (role == FrontendNodeType.REPLICA) {
diff --git a/fe/src/main/java/org/apache/doris/system/FrontendHbResponse.java b/fe/src/main/java/org/apache/doris/system/FrontendHbResponse.java
index a7d4349..2b4cf5f 100644
--- a/fe/src/main/java/org/apache/doris/system/FrontendHbResponse.java
+++ b/fe/src/main/java/org/apache/doris/system/FrontendHbResponse.java
@@ -87,7 +87,6 @@ public class FrontendHbResponse extends HeartbeatResponse implements Writable {
         out.writeLong(replayedJournalId);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         super.readFields(in);
         name = Text.readString(in);
diff --git a/fe/src/main/java/org/apache/doris/system/HeartbeatResponse.java b/fe/src/main/java/org/apache/doris/system/HeartbeatResponse.java
index 5d20ec2..d2618d1 100644
--- a/fe/src/main/java/org/apache/doris/system/HeartbeatResponse.java
+++ b/fe/src/main/java/org/apache/doris/system/HeartbeatResponse.java
@@ -96,7 +96,6 @@ public class HeartbeatResponse implements Writable {
         Text.writeString(out, status.name());
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         if (!isTypeRead) {
             type = Type.valueOf(Text.readString(in));
diff --git a/fe/src/main/java/org/apache/doris/transaction/GlobalTransactionMgr.java b/fe/src/main/java/org/apache/doris/transaction/GlobalTransactionMgr.java
index cfb8379..50bb686 100644
--- a/fe/src/main/java/org/apache/doris/transaction/GlobalTransactionMgr.java
+++ b/fe/src/main/java/org/apache/doris/transaction/GlobalTransactionMgr.java
@@ -1331,7 +1331,6 @@ public class GlobalTransactionMgr implements Writable {
         idGenerator.write(out);
     }
     
-    @Override
     public void readFields(DataInput in) throws IOException {
         int numTransactions = in.readInt();
         for (int i = 0; i < numTransactions; ++i) {
diff --git a/fe/src/main/java/org/apache/doris/transaction/PartitionCommitInfo.java b/fe/src/main/java/org/apache/doris/transaction/PartitionCommitInfo.java
index dc9b2fc..c22a376 100644
--- a/fe/src/main/java/org/apache/doris/transaction/PartitionCommitInfo.java
+++ b/fe/src/main/java/org/apache/doris/transaction/PartitionCommitInfo.java
@@ -47,7 +47,6 @@ public class PartitionCommitInfo implements Writable {
         out.writeLong(versionHash);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         partitionId = in.readLong();
         version = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/transaction/TableCommitInfo.java b/fe/src/main/java/org/apache/doris/transaction/TableCommitInfo.java
index 884cb6d..024ea74 100644
--- a/fe/src/main/java/org/apache/doris/transaction/TableCommitInfo.java
+++ b/fe/src/main/java/org/apache/doris/transaction/TableCommitInfo.java
@@ -53,7 +53,6 @@ public class TableCommitInfo implements Writable {
         }
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         tableId = in.readLong();
         boolean hasPartitionInfo = in.readBoolean();
diff --git a/fe/src/main/java/org/apache/doris/transaction/TabletCommitInfo.java b/fe/src/main/java/org/apache/doris/transaction/TabletCommitInfo.java
index 06c4e90..ed8aa01 100644
--- a/fe/src/main/java/org/apache/doris/transaction/TabletCommitInfo.java
+++ b/fe/src/main/java/org/apache/doris/transaction/TabletCommitInfo.java
@@ -61,7 +61,6 @@ public class TabletCommitInfo implements Writable {
         out.writeLong(backendId);
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         tabletId = in.readLong();
         backendId = in.readLong();
diff --git a/fe/src/main/java/org/apache/doris/transaction/TransactionIdGenerator.java b/fe/src/main/java/org/apache/doris/transaction/TransactionIdGenerator.java
index 0501602..77e6d88 100644
--- a/fe/src/main/java/org/apache/doris/transaction/TransactionIdGenerator.java
+++ b/fe/src/main/java/org/apache/doris/transaction/TransactionIdGenerator.java
@@ -65,7 +65,6 @@ public class TransactionIdGenerator {
     public void write(DataOutput out) throws IOException {
         out.writeLong(batchEndId);
     }
-
     public void readFields(DataInput in) throws IOException {
         long endId = in.readLong();
         batchEndId = endId;
diff --git a/fe/src/main/java/org/apache/doris/transaction/TransactionState.java b/fe/src/main/java/org/apache/doris/transaction/TransactionState.java
index 0324fda..2686965 100644
--- a/fe/src/main/java/org/apache/doris/transaction/TransactionState.java
+++ b/fe/src/main/java/org/apache/doris/transaction/TransactionState.java
@@ -538,7 +538,6 @@ public class TransactionState implements Writable {
         out.writeLong(timeoutMs);
     }
     
-    @Override
     public void readFields(DataInput in) throws IOException {
         transactionId = in.readLong();
         label = Text.readString(in);
diff --git a/fe/src/main/java/org/apache/doris/transaction/TxnCommitAttachment.java b/fe/src/main/java/org/apache/doris/transaction/TxnCommitAttachment.java
index aeab884..a59487f 100644
--- a/fe/src/main/java/org/apache/doris/transaction/TxnCommitAttachment.java
+++ b/fe/src/main/java/org/apache/doris/transaction/TxnCommitAttachment.java
@@ -81,7 +81,6 @@ public abstract class TxnCommitAttachment implements Writable {
         Text.writeString(out, sourceType.name());
     }
 
-    @Override
     public void readFields(DataInput in) throws IOException {
         if (!isTypeRead) {
             sourceType = LoadJobSourceType.valueOf(Text.readString(in));
diff --git a/fe/src/test/java/org/apache/doris/backup/FileSaverITest.java b/fe/src/test/java/org/apache/doris/backup/FileSaverITest.java
deleted file mode 100644
index 28e6490..0000000
--- a/fe/src/test/java/org/apache/doris/backup/FileSaverITest.java
+++ /dev/null
@@ -1,120 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package org.apache.doris.backup;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-public class FileSaverITest {
-
-    @Test
-    public void test() {
-        DirSaver parent1 = new DirSaver("parent1");
-        DirSaver parent2 = new DirSaver("parent2");
-        parent1.addChild(parent2);
-        parent1.addChild(new FileSaver("child1"));
-        parent1.addChild(new DirSaver("parent2"));
-
-        FileSaver child2 = new FileSaver("child2");
-        parent2.addChild(child2);
-        parent2.addChild(new FileSaver("child3"));
-
-        parent1.print("\t");
-        parent2.print("\t");
-
-        System.out.println(child2.getFullPath());
-
-        DirSaver root = DirSaver.createWithPath("/");
-        if (root != null) {
-            Assert.fail();
-        }
-
-        root = DirSaver.createWithPath("abc//ghi////ghi/");
-        System.out.println(root.getFullPath());
-    }
-
-    @Test
-    public void test_manifest_read_write() throws IOException {
-        DirSaver dir = DirSaver.createWithPath("/a/b/c/d");
-        Assert.assertEquals("/a/b/c/d/", dir.getFullPath());
-
-        dir = (DirSaver) dir.getTopParent();
-        Assert.assertEquals("/a/", dir.getFullPath());
-
-        dir.addDir("e/f/g").addFile("file1");
-        dir.print("#");
-        
-        Assert.assertTrue(dir.getChild("b").getChild("c").getChild("d") instanceof DirSaver);
-        Assert.assertTrue(dir.getChild("e").getChild("f").getChild("g").hasChild("file1"));
-
-        // write
-        File file = new File("./manifest");
-        file.createNewFile();
-        DataOutputStream out = new DataOutputStream(new FileOutputStream(file));
-        dir.write(out);
-        out.flush();
-        out.close();
-
-        // read
-        DataInputStream in = new DataInputStream(new FileInputStream(file));
-        DirSaver readDir = new DirSaver();
-        readDir.readFields(in);
-        readDir.print("-");
-
-        Assert.assertTrue(readDir.getChild("b").getChild("c").getChild("d") instanceof DirSaver);
-        Assert.assertTrue(readDir.getChild("e").getChild("f").getChild("g").hasChild("file1"));
-
-        in.close();
-        file.delete();
-    }
-
-    @Test
-    public void test_manifest_read_write2() throws IOException {
-        DirSaver dir = DirSaver.createWithPath("a");
-        Assert.assertEquals("/a/", dir.getFullPath());
-        Assert.assertFalse(dir.hasChild("file1"));
-
-        // write
-        File file = new File("./manifest");
-        file.createNewFile();
-        DataOutputStream out = new DataOutputStream(new FileOutputStream(file));
-        dir.write(out);
-        out.flush();
-        out.close();
-
-        // read
-        DataInputStream in = new DataInputStream(new FileInputStream(file));
-        DirSaver readDir = new DirSaver();
-        readDir.readFields(in);
-        readDir.print("-");
-
-        Assert.assertEquals("/a/", readDir.getFullPath());
-        Assert.assertFalse(readDir.hasChild("file1"));
-
-        in.close();
-        file.delete();
-    }
-
-}
diff --git a/fe/src/main/java/org/apache/doris/backup/FileSaver.java b/fe/src/test/java/org/apache/doris/common/io/DeepCopyTest.java
similarity index 58%
rename from fe/src/main/java/org/apache/doris/backup/FileSaver.java
rename to fe/src/test/java/org/apache/doris/common/io/DeepCopyTest.java
index ee3151b..06d1561 100644
--- a/fe/src/main/java/org/apache/doris/backup/FileSaver.java
+++ b/fe/src/test/java/org/apache/doris/common/io/DeepCopyTest.java
@@ -15,30 +15,23 @@
 // specific language governing permissions and limitations
 // under the License.
 
-package org.apache.doris.backup;
+package org.apache.doris.common.io;
 
-import org.apache.doris.common.io.Text;
+import org.apache.doris.persist.TableInfo;
 
-import org.apache.commons.lang.NotImplementedException;
+import org.junit.Assert;
+import org.junit.Test;
 
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
+public class DeepCopyTest {
 
-public class FileSaver extends FileSaverI {
-
-    public FileSaver(String name) {
-        super(name);
-    }
-
-    @Override
-    public void write(DataOutput out) throws IOException {
-        out.writeShort(1);
-        Text.writeString(out, name);
-    }
-
-    @Override
-    public void readFields(DataInput in) throws IOException {
-        throw new NotImplementedException();
+    @Test
+    public void test() {
+        TableInfo info = TableInfo.createForTableRename(1, 2, "newTbl");
+        TableInfo copied = new TableInfo();
+        boolean res = DeepCopy.copy(info, copied, TableInfo.class);
+        Assert.assertTrue(res);
+        Assert.assertEquals(1, copied.getDbId());
+        Assert.assertEquals(2, copied.getTableId());
+        Assert.assertEquals("newTbl", copied.getNewTableName());
     }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org