This is an automated email from the ASF dual-hosted git repository.
xuyang pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push:
new 17b02c20c3f [bug](backup) Add table id into convert_rowset_ids()
(#37102)
17b02c20c3f is described below
commit 17b02c20c3f74a3cbeac2fcffa15bcda4e62be9e
Author: xy720 <[email protected]>
AuthorDate: Mon Jul 15 14:50:22 2024 +0800
[bug](backup) Add table id into convert_rowset_ids() (#37102)
## Proposed changes
Issue Number: step 1 in version 2.0 in #37076
<!--Describe your changes.-->
---
be/src/olap/single_replica_compaction.cpp | 4 ++--
be/src/olap/snapshot_manager.cpp | 7 +++++--
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 | 3 ++-
be/src/runtime/snapshot_loader.cpp | 3 ++-
fe/fe-core/src/main/java/org/apache/doris/task/CloneTask.java | 2 +-
gensrc/thrift/AgentService.thrift | 1 +
8 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/be/src/olap/single_replica_compaction.cpp
b/be/src/olap/single_replica_compaction.cpp
index 5c036821307..fdccc78816f 100644
--- a/be/src/olap/single_replica_compaction.cpp
+++ b/be/src/olap/single_replica_compaction.cpp
@@ -321,8 +321,8 @@ Status SingleReplicaCompaction::_fetch_rowset(const
TReplicaInfo& addr, const st
if (status.ok()) {
// change all rowset ids because they maybe its id same with local
rowset
auto olap_st = SnapshotManager::instance()->convert_rowset_ids(
- local_path, _tablet->tablet_id(), _tablet->replica_id(),
_tablet->partition_id(),
- _tablet->schema_hash());
+ local_path, _tablet->tablet_id(), _tablet->replica_id(),
_tablet->table_id(),
+ _tablet->partition_id(), _tablet->schema_hash());
if (!olap_st.ok()) {
LOG(WARNING) << "fail to convert rowset ids, path=" << local_path
<< ", tablet_id=" << _tablet->tablet_id() << ",
error=" << olap_st;
diff --git a/be/src/olap/snapshot_manager.cpp b/be/src/olap/snapshot_manager.cpp
index 7729e27b76d..df7c442ff2c 100644
--- a/be/src/olap/snapshot_manager.cpp
+++ b/be/src/olap/snapshot_manager.cpp
@@ -125,8 +125,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, int64_t
partition_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
@@ -161,6 +161,9 @@ Status SnapshotManager::convert_rowset_ids(const
std::string& clone_dir, int64_t
new_tablet_meta_pb.set_tablet_id(tablet_id);
*new_tablet_meta_pb.mutable_tablet_uid() = TabletUid::gen_uid().to_proto();
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 != -1) {
new_tablet_meta_pb.set_partition_id(partition_id);
}
diff --git a/be/src/olap/snapshot_manager.h b/be/src/olap/snapshot_manager.h
index 3548fd65e22..23b38dc302c 100644
--- a/be/src/olap/snapshot_manager.h
+++ b/be/src/olap/snapshot_manager.h
@@ -55,7 +55,7 @@ public:
static SnapshotManager* instance();
Status convert_rowset_ids(const std::string& clone_dir, int64_t tablet_id,
int64_t replica_id,
- int64_t partition_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 a349d006c98..0b077076e57 100644
--- a/be/src/olap/task/engine_clone_task.cpp
+++ b/be/src/olap/task/engine_clone_task.cpp
@@ -407,7 +407,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.partition_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", _mask_token(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 f0f2f780d4c..239f99bb40b 100644
--- a/be/src/olap/task/engine_storage_migration_task.cpp
+++ b/be/src/olap/task/engine_storage_migration_task.cpp
@@ -156,7 +156,8 @@ 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(),
_tablet->partition_id(), schema_hash);
+ 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 7c2c68de3dd..51d543afcc0 100644
--- a/be/src/runtime/snapshot_loader.cpp
+++ b/be/src/runtime/snapshot_loader.cpp
@@ -699,7 +699,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(),
tablet->partition_id(), schema_hash);
+ snapshot_path, tablet_id, tablet->replica_id(), tablet->table_id(),
+ tablet->partition_id(), schema_hash);
if (!convert_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 4c06460cee7..c167a60c494 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
@@ -91,7 +91,7 @@ public class CloneTask extends AgentTask {
request.setDestPathHash(destPathHash);
}
request.setTimeoutS(timeoutS);
-
+ request.setTableId(tableId);
return request;
}
diff --git a/gensrc/thrift/AgentService.thrift
b/gensrc/thrift/AgentService.thrift
index 83939252b09..79d3eb158d1 100644
--- a/gensrc/thrift/AgentService.thrift
+++ b/gensrc/thrift/AgentService.thrift
@@ -266,6 +266,7 @@ struct TCloneReq {
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: [email protected]
For additional commands, e-mail: [email protected]