From d94cc9b949f198a24d96ca98e6784f18cbd786d8 Mon Sep 17 00:00:00 2001 From: Kevin Chou Date: Thu, 24 Jul 2025 17:58:48 +0800 Subject: [PATCH 1/2] make non-shared-storage clean ccm and upsert kv idempotent --- include/cc/cc_request.h | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/include/cc/cc_request.h b/include/cc/cc_request.h index 07bab182..110ad2ee 100644 --- a/include/cc/cc_request.h +++ b/include/cc/cc_request.h @@ -3356,7 +3356,8 @@ struct DataSyncScanCc : public CcRequestBase slices_to_scan_.reserve(old_slices_delta_size->size()); std::for_each(old_slices_delta_size->begin(), old_slices_delta_size->end(), - [&](decltype(*old_slices_delta_size->begin()) &elem) { + [&](decltype(*old_slices_delta_size->begin()) &elem) + { slices_to_scan_.emplace_back( std::move(elem.first.GetShallowCopy())); }); @@ -5130,6 +5131,23 @@ struct KickoutCcEntryCc : public TemplatedCcRequest if (!resume_from_upsert_kv) { + const CatalogEntry *catalog_entry = + ccs.GetCatalog(*table_name_, node_group_id_); + if (catalog_entry == nullptr) + { + // Fetch catalog + ccs.FetchCatalog( + *table_name_, node_group_id_, ng_term, this); + return false; + } + if (catalog_entry->schema_version_ >= clean_ts_) + { + // This is an out-dated request. The table has already been + // cleaned and updated. + return SetFinish(); + } + assert(catalog_entry->dirty_schema_version_ == clean_ts_); + if (!CleanCcMap(ccs)) { // Current ccmap has more page @@ -5138,8 +5156,6 @@ struct KickoutCcEntryCc : public TemplatedCcRequest return false; } - const CatalogEntry *catalog_entry = - ccs.GetCatalog(*table_name_, node_group_id_); if (catalog_entry != nullptr && catalog_entry->dirty_schema_ != nullptr) { @@ -5162,7 +5178,8 @@ struct KickoutCcEntryCc : public TemplatedCcRequest return false; } - if (catalog_entry->schema_ != nullptr) + if (catalog_entry->schema_ != nullptr && + catalog_entry->dirty_schema_ != nullptr) { assert(ccs.core_id_ == 0); // Enter ddl phase, update the value of From f11edbd03c491ce4d6377cbd79a4d6594c96aeb1 Mon Sep 17 00:00:00 2001 From: Kevin Chou Date: Thu, 24 Jul 2025 18:02:44 +0800 Subject: [PATCH 2/2] format --- include/cc/cc_request.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/include/cc/cc_request.h b/include/cc/cc_request.h index 110ad2ee..f9878330 100644 --- a/include/cc/cc_request.h +++ b/include/cc/cc_request.h @@ -3356,8 +3356,7 @@ struct DataSyncScanCc : public CcRequestBase slices_to_scan_.reserve(old_slices_delta_size->size()); std::for_each(old_slices_delta_size->begin(), old_slices_delta_size->end(), - [&](decltype(*old_slices_delta_size->begin()) &elem) - { + [&](decltype(*old_slices_delta_size->begin()) &elem) { slices_to_scan_.emplace_back( std::move(elem.first.GetShallowCopy())); });