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

lide pushed a commit to branch branch-1.2-lts
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-1.2-lts by this push:
     new 2ce6124f155 [bug](backup) Add table/partition id into 
convert_rowset_ids() (#37077)
2ce6124f155 is described below

commit 2ce6124f1555a779881612ae6524fc48d246dce5
Author: xy720 <22125576+xy...@users.noreply.github.com>
AuthorDate: Sun Jul 14 21:21:07 2024 +0800

    [bug](backup) Add table/partition id into convert_rowset_ids() (#37077)
---
 be/src/olap/snapshot_manager.cpp                             | 12 +++++++++++-
 be/src/olap/snapshot_manager.h                               |  2 +-
 be/src/olap/task/engine_clone_task.cpp                       |  2 +-
 be/src/olap/task/engine_storage_migration_task.cpp           |  5 +++--
 be/src/runtime/snapshot_loader.cpp                           |  3 ++-
 .../src/main/java/org/apache/doris/task/CloneTask.java       |  2 ++
 gensrc/thrift/AgentService.thrift                            |  2 ++
 7 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/be/src/olap/snapshot_manager.cpp b/be/src/olap/snapshot_manager.cpp
index ea1dc1c995f..7136f4f2586 100644
--- a/be/src/olap/snapshot_manager.cpp
+++ b/be/src/olap/snapshot_manager.cpp
@@ -117,7 +117,8 @@ Status SnapshotManager::release_snapshot(const string& 
snapshot_path) {
 }
 
 Status SnapshotManager::convert_rowset_ids(const std::string& clone_dir, 
int64_t tablet_id,
-                                           int64_t replica_id, const int32_t& 
schema_hash) {
+                                           int64_t replica_id, int64_t 
table_id,
+                                           int64_t partition_id, const 
int32_t& schema_hash) {
     SCOPED_CONSUME_MEM_TRACKER(_mem_tracker);
     Status res = Status::OK();
     // check clone dir existed
@@ -149,6 +150,12 @@ Status SnapshotManager::convert_rowset_ids(const 
std::string& clone_dir, int64_t
     // equal to tablet id in meta
     new_tablet_meta_pb.set_tablet_id(tablet_id);
     new_tablet_meta_pb.set_replica_id(replica_id);
+    if (table_id > 0) {
+        new_tablet_meta_pb.set_table_id(table_id);
+    }
+    if (partition_id > 0) {
+        new_tablet_meta_pb.set_partition_id(partition_id);
+    }
     new_tablet_meta_pb.set_schema_hash(schema_hash);
     TabletSchemaSPtr tablet_schema;
     tablet_schema =
@@ -177,6 +184,9 @@ Status SnapshotManager::convert_rowset_ids(const 
std::string& clone_dir, int64_t
         }
         // FIXME(cyx): Redundant?
         rowset_meta->set_tablet_id(tablet_id);
+        if (partition_id > 0) {
+            rowset_meta->set_partition_id(partition_id);
+        }
         rowset_meta->set_tablet_schema_hash(schema_hash);
         Version rowset_version = {visible_rowset.start_version(), 
visible_rowset.end_version()};
         rs_version_map[rowset_version] = rowset_meta;
diff --git a/be/src/olap/snapshot_manager.h b/be/src/olap/snapshot_manager.h
index a7857c3ffb0..df99cfda839 100644
--- a/be/src/olap/snapshot_manager.h
+++ b/be/src/olap/snapshot_manager.h
@@ -60,7 +60,7 @@ public:
     static SnapshotManager* instance();
 
     Status convert_rowset_ids(const std::string& clone_dir, int64_t tablet_id, 
int64_t replica_id,
-                              const int32_t& schema_hash);
+                              int64_t table_id, int64_t partition_id, const 
int32_t& schema_hash);
 
 private:
     SnapshotManager() : _snapshot_base_id(0) {
diff --git a/be/src/olap/task/engine_clone_task.cpp 
b/be/src/olap/task/engine_clone_task.cpp
index 67e3c36e796..75e8caa59a3 100644
--- a/be/src/olap/task/engine_clone_task.cpp
+++ b/be/src/olap/task/engine_clone_task.cpp
@@ -263,7 +263,7 @@ Status 
EngineCloneTask::_make_and_download_snapshots(DataDir& data_dir,
             // change all rowset ids because they maybe its id same with local 
rowset
             status = SnapshotManager::instance()->convert_rowset_ids(
                     local_data_path, _clone_req.tablet_id, 
_clone_req.replica_id,
-                    _clone_req.schema_hash);
+                    _clone_req.table_id, _clone_req.partition_id, 
_clone_req.schema_hash);
         } else {
             LOG_WARNING("failed to download snapshot from remote BE")
                     .tag("url", remote_url_prefix)
diff --git a/be/src/olap/task/engine_storage_migration_task.cpp 
b/be/src/olap/task/engine_storage_migration_task.cpp
index 6ecefe47222..913ba6a7a4d 100644
--- a/be/src/olap/task/engine_storage_migration_task.cpp
+++ b/be/src/olap/task/engine_storage_migration_task.cpp
@@ -125,8 +125,9 @@ Status 
EngineStorageMigrationTask::_gen_and_write_header_to_hdr_file(
 
     // it will change rowset id and its create time
     // rowset create time is useful when load tablet from meta to check which 
tablet is the tablet to load
-    return SnapshotManager::instance()->convert_rowset_ids(full_path, 
tablet_id,
-                                                           
_tablet->replica_id(), schema_hash);
+    return SnapshotManager::instance()->convert_rowset_ids(
+            full_path, tablet_id, _tablet->replica_id(), _tablet->table_id(),
+            _tablet->partition_id(), schema_hash);
 }
 
 Status EngineStorageMigrationTask::_reload_tablet(const std::string& 
full_path) {
diff --git a/be/src/runtime/snapshot_loader.cpp 
b/be/src/runtime/snapshot_loader.cpp
index c4b2a390dfd..2915f1ad2b8 100644
--- a/be/src/runtime/snapshot_loader.cpp
+++ b/be/src/runtime/snapshot_loader.cpp
@@ -406,7 +406,8 @@ Status SnapshotLoader::move(const std::string& 
snapshot_path, TabletSharedPtr ta
 
     // rename the rowset ids and tabletid info in rowset meta
     Status convert_status = SnapshotManager::instance()->convert_rowset_ids(
-            snapshot_path, tablet_id, tablet->replica_id(), schema_hash);
+            snapshot_path, tablet_id, tablet->replica_id(), tablet->table_id(),
+            tablet->partition_id(), schema_hash);
     if (convert_status != Status::OK()) {
         std::stringstream ss;
         ss << "failed to convert rowsetids in snapshot: " << snapshot_path
diff --git a/fe/fe-core/src/main/java/org/apache/doris/task/CloneTask.java 
b/fe/fe-core/src/main/java/org/apache/doris/task/CloneTask.java
index d614bbb24e3..e8e28577af9 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/task/CloneTask.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/task/CloneTask.java
@@ -88,6 +88,8 @@ public class CloneTask extends AgentTask {
             request.setDestPathHash(destPathHash);
         }
         request.setTimeoutS(timeoutS);
+        request.setPartitionId(partitionId);
+        request.setTableId(tableId);
 
         return request;
     }
diff --git a/gensrc/thrift/AgentService.thrift 
b/gensrc/thrift/AgentService.thrift
index 18a92149cf7..939f01925ab 100644
--- a/gensrc/thrift/AgentService.thrift
+++ b/gensrc/thrift/AgentService.thrift
@@ -210,6 +210,8 @@ struct TCloneReq {
     9: optional i64 dest_path_hash;
     10: optional i32 timeout_s;
     11: optional Types.TReplicaId replica_id = 0
+    12: optional i64 partition_id
+    13: optional i64 table_id = -1
 }
 
 struct TCompactionReq {


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

Reply via email to