This is an automated email from the ASF dual-hosted git repository.
dataroaring 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 09344f69be9 [fix](merge-on-write) migration may cause duplicate keys
for mow table (#28923) (#28941)
09344f69be9 is described below
commit 09344f69be9efcade9b6c837f39e7d798f1ed3aa
Author: Xin Liao <[email protected]>
AuthorDate: Mon Dec 25 13:48:35 2023 +0800
[fix](merge-on-write) migration may cause duplicate keys for mow table
(#28923) (#28941)
---
be/src/olap/task/engine_storage_migration_task.cpp | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/be/src/olap/task/engine_storage_migration_task.cpp
b/be/src/olap/task/engine_storage_migration_task.cpp
index fe18ef65719..e14be62fe88 100644
--- a/be/src/olap/task/engine_storage_migration_task.cpp
+++ b/be/src/olap/task/engine_storage_migration_task.cpp
@@ -24,6 +24,7 @@
#include <algorithm>
#include <ctime>
#include <memory>
+#include <mutex>
#include <new>
#include <ostream>
#include <set>
@@ -195,6 +196,21 @@ Status EngineStorageMigrationTask::_migrate() {
int32_t end_version = 0;
std::vector<RowsetSharedPtr> consistent_rowsets;
+ // During migration, if the rowsets being migrated undergoes a compaction
operation,
+ // that will result in incorrect delete bitmaps after migration for mow
table. Therefore,
+ // compaction will be prohibited for the mow table when migration.
Moreover, it is useless
+ // to perform a compaction operation on the migration data, as the
migration still migrates
+ // the data of rowsets before the compaction operation.
+ std::unique_lock full_compaction_lock(_tablet->get_full_compaction_lock(),
std::defer_lock);
+ std::unique_lock base_compaction_lock(_tablet->get_base_compaction_lock(),
std::defer_lock);
+ std::unique_lock
cumu_compaction_lock(_tablet->get_cumulative_compaction_lock(),
+ std::defer_lock);
+ if (_tablet->enable_unique_key_merge_on_write()) {
+ full_compaction_lock.lock();
+ base_compaction_lock.lock();
+ cumu_compaction_lock.lock();
+ }
+
// try hold migration lock first
Status res;
uint64_t shard = 0;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]