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,