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]

Reply via email to