From d30aaecf56743bb44e5261dd8bbf3129db4e3b43 Mon Sep 17 00:00:00 2001 From: cyq <1056374449@qq.com> Date: Sun, 15 Dec 2024 17:56:35 +0800 Subject: [PATCH] =?UTF-8?q?iDeleteReq=E7=9A=84prepare?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fielddb/field_db.cpp | 2 +- fielddb/request.cpp | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/fielddb/field_db.cpp b/fielddb/field_db.cpp index 38e390a..ad9e72d 100644 --- a/fielddb/field_db.cpp +++ b/fielddb/field_db.cpp @@ -229,7 +229,7 @@ Status FieldDB::CreateIndexOnField(const std::string& field_name) { std::string Field = field_name; iCreateReq req(&Field,&mutex_); HandleRequest(req); - //如果已经存在索引,那么可以直接返回 + //如果已经存在索引,那么直接返回 if(req.Existed) { return req.s; } diff --git a/fielddb/request.cpp b/fielddb/request.cpp index f601a28..c1e926e 100644 --- a/fielddb/request.cpp +++ b/fielddb/request.cpp @@ -141,6 +141,14 @@ void iDeleteReq::Prepare(FieldDB *DB) { s = Status::OK(); return ; } + auto [istatus,parent] = DB->index_[*Field]; + if(istatus == FieldDB::Exist) { + DB->index_[*Field] = {FieldDB::Creating,this}; + done = true; + } else { + //如果正在创建或者删除,那么pend到对应的请求上 + parent->PendReq(this); + } } void iDeleteReq::ConstructBatch(WriteBatch &KVBatch,WriteBatch &IndexBatch,