This is an automated email from the ASF dual-hosted git repository.
dataroaring pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new f8c67313d33 [feat](cloud) recycle versioned schema kv (#55285)
f8c67313d33 is described below
commit f8c67313d33bb0b39281f3cd654c8b6589173add
Author: meiyi <[email protected]>
AuthorDate: Wed Aug 27 09:05:23 2025 +0800
[feat](cloud) recycle versioned schema kv (#55285)
---
cloud/src/recycler/recycler.cpp | 6 ++++++
cloud/test/recycler_test.cpp | 11 +++++++++++
2 files changed, 17 insertions(+)
diff --git a/cloud/src/recycler/recycler.cpp b/cloud/src/recycler/recycler.cpp
index 126c307df70..7b1ab324121 100644
--- a/cloud/src/recycler/recycler.cpp
+++ b/cloud/src/recycler/recycler.cpp
@@ -1726,6 +1726,7 @@ int InstanceRecycler::recycle_tablets(int64_t table_id,
int64_t index_id,
LOG(WARNING) << "remove job kv, begin=" << hex(job_key_begin) << " end="
<< hex(job_key_end);
std::string schema_key_begin, schema_key_end;
std::string schema_dict_key;
+ std::string versioned_schema_key_begin, versioned_schema_key_end;
if (partition_id <= 0) {
// Delete schema kv of this index
meta_schema_key({instance_id_, index_id, 0}, &schema_key_begin);
@@ -1736,6 +1737,11 @@ int InstanceRecycler::recycle_tablets(int64_t table_id,
int64_t index_id,
meta_schema_pb_dictionary_key({instance_id_, index_id},
&schema_dict_key);
txn->remove(schema_dict_key);
LOG(WARNING) << "remove schema dict kv, key=" << hex(schema_dict_key);
+ versioned::meta_schema_key({instance_id_, index_id, 0},
&versioned_schema_key_begin);
+ versioned::meta_schema_key({instance_id_, index_id + 1, 0},
&versioned_schema_key_end);
+ txn->remove(versioned_schema_key_begin, versioned_schema_key_end);
+ LOG(WARNING) << "remove versioned schema kv, begin=" <<
hex(versioned_schema_key_begin)
+ << " end=" << hex(versioned_schema_key_end);
}
TxnErrorCode err = txn->commit();
diff --git a/cloud/test/recycler_test.cpp b/cloud/test/recycler_test.cpp
index 7c53fe09f90..f2521928875 100644
--- a/cloud/test/recycler_test.cpp
+++ b/cloud/test/recycler_test.cpp
@@ -40,6 +40,7 @@
#include "cpp/sync_point.h"
#include "meta-service/meta_service.h"
#include "meta-store/blob_message.h"
+#include "meta-store/document_message.h"
#include "meta-store/keys.h"
#include "meta-store/mem_txn_kv.h"
#include "meta-store/txn_kv.h"
@@ -223,6 +224,10 @@ static int create_recycle_rowset(TxnKv* txn_kv,
StorageVaultAccessor* accessor,
meta_schema_key({instance_id, rowset.index_id(),
rowset.schema_version()}, &schema_key);
rowset.tablet_schema().SerializeToString(&schema_val);
txn->put(schema_key, schema_val);
+ auto versioned_schema_key = versioned::meta_schema_key(
+ {instance_id, rowset.index_id(), rowset.schema_version()});
+ doris::TabletSchemaCloudPB tablet_schema(rowset.tablet_schema());
+ versioned::document_put(txn.get(), versioned_schema_key,
std::move(tablet_schema));
}
if (txn->commit() != TxnErrorCode::TXN_OK) {
return -1;
@@ -1895,6 +1900,7 @@ TEST(RecyclerTest, recycle_indexes) {
InstanceInfoPB instance;
instance.set_instance_id(instance_id);
+ instance.set_multi_version_status(MULTI_VERSION_WRITE_ONLY);
auto obj_info = instance.add_obj_info();
obj_info->set_id("recycle_indexes");
obj_info->set_ak(config::test_s3_ak);
@@ -1989,6 +1995,11 @@ TEST(RecyclerTest, recycle_indexes) {
end_key = meta_schema_key({instance_id, INT64_MAX, 0});
ASSERT_EQ(txn->get(begin_key, end_key, &it), TxnErrorCode::TXN_OK);
ASSERT_EQ(it->size(), 0);
+ // versioned meta_schema_key
+ begin_key = versioned::meta_schema_key({instance_id, 0, 0});
+ end_key = versioned::meta_schema_key({instance_id, INT64_MAX, 0});
+ ASSERT_EQ(txn->get(begin_key, end_key, &it), TxnErrorCode::TXN_OK);
+ ASSERT_EQ(it->size(), 0);
// job_tablet_key
begin_key = job_tablet_key({instance_id, table_id, 0, 0, 0});
end_key = job_tablet_key({instance_id, table_id + 1, 0, 0, 0});
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]