未验证 提交 ba26b677 编写于 作者: C Cai Yudong 提交者: GitHub

snapshot gc (#2668)

* rename StatusField to StateField
Signed-off-by: Nyudong.cai <yudong.cai@zilliz.com>

* fix typo
Signed-off-by: Nyudong.cai <yudong.cai@zilliz.com>

* enable GC in OnNoRefCallBack
Signed-off-by: Nyudong.cai <yudong.cai@zilliz.com>

* code opt
Signed-off-by: Nyudong.cai <yudong.cai@zilliz.com>
上级 403753a1
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include <sstream> #include <sstream>
#include "db/snapshot/OperationExecutor.h" #include "db/snapshot/OperationExecutor.h"
#include "db/snapshot/Snapshots.h" #include "db/snapshot/Snapshots.h"
#include "utils/Status.h"
namespace milvus { namespace milvus {
namespace engine { namespace engine {
...@@ -24,42 +25,30 @@ BuildOperation::BuildOperation(const OperationContext& context, ScopedSnapshotT ...@@ -24,42 +25,30 @@ BuildOperation::BuildOperation(const OperationContext& context, ScopedSnapshotT
Status Status
BuildOperation::DoExecute(Store& store) { BuildOperation::DoExecute(Store& store) {
auto status = CheckStale(std::bind(&BuildOperation::CheckSegmentStale, this, std::placeholders::_1, STATUS_CHECK(CheckStale(std::bind(&BuildOperation::CheckSegmentStale, this, std::placeholders::_1,
context_.new_segment_files[0]->GetSegmentId())); context_.new_segment_files[0]->GetSegmentId())));
if (!status.ok())
return status;
SegmentCommitOperation op(context_, GetAdjustedSS()); SegmentCommitOperation sc_op(context_, GetAdjustedSS());
op(store); STATUS_CHECK(sc_op(store));
status = op.GetResource(context_.new_segment_commit); STATUS_CHECK(sc_op.GetResource(context_.new_segment_commit));
if (!status.ok())
return status;
AddStepWithLsn(*context_.new_segment_commit, context_.lsn); AddStepWithLsn(*context_.new_segment_commit, context_.lsn);
PartitionCommitOperation pc_op(context_, GetAdjustedSS()); PartitionCommitOperation pc_op(context_, GetAdjustedSS());
pc_op(store); STATUS_CHECK(pc_op(store));
OperationContext cc_context; OperationContext cc_context;
status = pc_op.GetResource(cc_context.new_partition_commit); STATUS_CHECK(pc_op.GetResource(cc_context.new_partition_commit));
if (!status.ok())
return status;
AddStepWithLsn(*cc_context.new_partition_commit, context_.lsn); AddStepWithLsn(*cc_context.new_partition_commit, context_.lsn);
context_.new_partition_commit = cc_context.new_partition_commit;
status = pc_op.GetResource(context_.new_partition_commit); context_.new_partition_commit = cc_context.new_partition_commit;
if (!status.ok()) STATUS_CHECK(pc_op.GetResource(context_.new_partition_commit));
return status;
AddStepWithLsn(*context_.new_partition_commit, context_.lsn); AddStepWithLsn(*context_.new_partition_commit, context_.lsn);
CollectionCommitOperation cc_op(cc_context, GetAdjustedSS()); CollectionCommitOperation cc_op(cc_context, GetAdjustedSS());
cc_op(store); STATUS_CHECK(cc_op(store));
status = cc_op.GetResource(context_.new_collection_commit); STATUS_CHECK(cc_op.GetResource(context_.new_collection_commit));
if (!status.ok())
return status;
AddStepWithLsn(*context_.new_collection_commit, context_.lsn); AddStepWithLsn(*context_.new_collection_commit, context_.lsn);
return status; return Status::OK();
} }
Status Status
...@@ -75,10 +64,9 @@ BuildOperation::CheckSegmentStale(ScopedSnapshotT& latest_snapshot, ID_TYPE segm ...@@ -75,10 +64,9 @@ BuildOperation::CheckSegmentStale(ScopedSnapshotT& latest_snapshot, ID_TYPE segm
Status Status
BuildOperation::CommitNewSegmentFile(const SegmentFileContext& context, SegmentFilePtr& created) { BuildOperation::CommitNewSegmentFile(const SegmentFileContext& context, SegmentFilePtr& created) {
auto status = STATUS_CHECK(
CheckStale(std::bind(&BuildOperation::CheckSegmentStale, this, std::placeholders::_1, context.segment_id)); CheckStale(std::bind(&BuildOperation::CheckSegmentStale, this, std::placeholders::_1, context.segment_id)));
if (!status.ok())
return status;
auto segment = GetStartedSS()->GetResource<Segment>(context.segment_id); auto segment = GetStartedSS()->GetResource<Segment>(context.segment_id);
if (!segment) { if (!segment) {
std::stringstream emsg; std::stringstream emsg;
...@@ -88,15 +76,12 @@ BuildOperation::CommitNewSegmentFile(const SegmentFileContext& context, SegmentF ...@@ -88,15 +76,12 @@ BuildOperation::CommitNewSegmentFile(const SegmentFileContext& context, SegmentF
auto ctx = context; auto ctx = context;
ctx.partition_id = segment->GetPartitionId(); ctx.partition_id = segment->GetPartitionId();
auto new_sf_op = std::make_shared<SegmentFileOperation>(ctx, GetStartedSS()); auto new_sf_op = std::make_shared<SegmentFileOperation>(ctx, GetStartedSS());
status = new_sf_op->Push(); STATUS_CHECK(new_sf_op->Push());
if (!status.ok()) STATUS_CHECK(new_sf_op->GetResource(created));
return status;
status = new_sf_op->GetResource(created);
if (!status.ok())
return status;
context_.new_segment_files.push_back(created); context_.new_segment_files.push_back(created);
AddStepWithLsn(*created, context_.lsn); AddStepWithLsn(*created, context_.lsn);
return status;
return Status::OK();
} }
NewSegmentOperation::NewSegmentOperation(const OperationContext& context, ScopedSnapshotT prev_ss) NewSegmentOperation::NewSegmentOperation(const OperationContext& context, ScopedSnapshotT prev_ss)
...@@ -111,13 +96,9 @@ NewSegmentOperation::DoExecute(Store& store) { ...@@ -111,13 +96,9 @@ NewSegmentOperation::DoExecute(Store& store) {
/* auto status = PrevSnapshotRequried(); */ /* auto status = PrevSnapshotRequried(); */
/* if (!status.ok()) return status; */ /* if (!status.ok()) return status; */
// TODO: Check Context // TODO: Check Context
SegmentCommitOperation op(context_, GetAdjustedSS()); SegmentCommitOperation sc_op(context_, GetAdjustedSS());
auto status = op(store); STATUS_CHECK(sc_op(store));
if (!status.ok()) STATUS_CHECK(sc_op.GetResource(context_.new_segment_commit));
return status;
status = op.GetResource(context_.new_segment_commit);
if (!status.ok())
return status;
AddStepWithLsn(*context_.new_segment_commit, context_.lsn); AddStepWithLsn(*context_.new_segment_commit, context_.lsn);
/* std::cout << GetRepr() << " POST_SC_MAP=("; */ /* std::cout << GetRepr() << " POST_SC_MAP=("; */
/* for (auto id : context_.new_segment_commit->GetMappings()) { */ /* for (auto id : context_.new_segment_commit->GetMappings()) { */
...@@ -126,14 +107,9 @@ NewSegmentOperation::DoExecute(Store& store) { ...@@ -126,14 +107,9 @@ NewSegmentOperation::DoExecute(Store& store) {
/* std::cout << ")" << std::endl; */ /* std::cout << ")" << std::endl; */
OperationContext cc_context; OperationContext cc_context;
PartitionCommitOperation pc_op(context_, GetAdjustedSS()); PartitionCommitOperation pc_op(context_, GetAdjustedSS());
status = pc_op(store); STATUS_CHECK(pc_op(store));
if (!status.ok()) STATUS_CHECK(pc_op.GetResource(cc_context.new_partition_commit));
return status;
status = pc_op.GetResource(cc_context.new_partition_commit);
if (!status.ok())
return status;
AddStepWithLsn(*cc_context.new_partition_commit, context_.lsn); AddStepWithLsn(*cc_context.new_partition_commit, context_.lsn);
context_.new_partition_commit = cc_context.new_partition_commit; context_.new_partition_commit = cc_context.new_partition_commit;
/* std::cout << GetRepr() << " POST_PC_MAP=("; */ /* std::cout << GetRepr() << " POST_PC_MAP=("; */
...@@ -143,46 +119,34 @@ NewSegmentOperation::DoExecute(Store& store) { ...@@ -143,46 +119,34 @@ NewSegmentOperation::DoExecute(Store& store) {
/* std::cout << ")" << std::endl; */ /* std::cout << ")" << std::endl; */
CollectionCommitOperation cc_op(cc_context, GetAdjustedSS()); CollectionCommitOperation cc_op(cc_context, GetAdjustedSS());
status = cc_op(store); STATUS_CHECK(cc_op(store));
if (!status.ok()) STATUS_CHECK(cc_op.GetResource(context_.new_collection_commit));
return status;
status = cc_op.GetResource(context_.new_collection_commit);
if (!status.ok())
return status;
AddStepWithLsn(*context_.new_collection_commit, context_.lsn); AddStepWithLsn(*context_.new_collection_commit, context_.lsn);
return status; return Status::OK();
} }
Status Status
NewSegmentOperation::CommitNewSegment(SegmentPtr& created) { NewSegmentOperation::CommitNewSegment(SegmentPtr& created) {
auto op = std::make_shared<SegmentOperation>(context_, GetStartedSS()); auto op = std::make_shared<SegmentOperation>(context_, GetStartedSS());
auto status = op->Push(); STATUS_CHECK(op->Push());
if (!status.ok()) STATUS_CHECK(op->GetResource(context_.new_segment));
return status;
status = op->GetResource(context_.new_segment);
if (!status.ok())
return status;
created = context_.new_segment; created = context_.new_segment;
AddStepWithLsn(*created, context_.lsn); AddStepWithLsn(*created, context_.lsn);
return status; return Status::OK();
} }
Status Status
NewSegmentOperation::CommitNewSegmentFile(const SegmentFileContext& context, SegmentFilePtr& created) { NewSegmentOperation::CommitNewSegmentFile(const SegmentFileContext& context, SegmentFilePtr& created) {
auto c = context; auto ctx = context;
c.segment_id = context_.new_segment->GetID(); ctx.segment_id = context_.new_segment->GetID();
c.partition_id = context_.new_segment->GetPartitionId(); ctx.partition_id = context_.new_segment->GetPartitionId();
auto new_sf_op = std::make_shared<SegmentFileOperation>(c, GetStartedSS()); auto new_sf_op = std::make_shared<SegmentFileOperation>(ctx, GetStartedSS());
auto status = new_sf_op->Push(); STATUS_CHECK(new_sf_op->Push());
if (!status.ok()) STATUS_CHECK(new_sf_op->GetResource(created));
return status;
status = new_sf_op->GetResource(created);
if (!status.ok())
return status;
AddStepWithLsn(*created, context_.lsn); AddStepWithLsn(*created, context_.lsn);
context_.new_segment_files.push_back(created); context_.new_segment_files.push_back(created);
return status; return Status::OK();
} }
MergeOperation::MergeOperation(const OperationContext& context, ScopedSnapshotT prev_ss) : BaseT(context, prev_ss) { MergeOperation::MergeOperation(const OperationContext& context, ScopedSnapshotT prev_ss) : BaseT(context, prev_ss) {
...@@ -204,58 +168,42 @@ MergeOperation::OnSnapshotStale() { ...@@ -204,58 +168,42 @@ MergeOperation::OnSnapshotStale() {
Status Status
MergeOperation::CommitNewSegment(SegmentPtr& created) { MergeOperation::CommitNewSegment(SegmentPtr& created) {
Status status;
if (context_.new_segment) { if (context_.new_segment) {
created = context_.new_segment; created = context_.new_segment;
return status; return Status::OK();
} }
auto op = std::make_shared<SegmentOperation>(context_, GetStartedSS()); auto op = std::make_shared<SegmentOperation>(context_, GetStartedSS());
status = op->Push(); STATUS_CHECK(op->Push());
if (!status.ok()) STATUS_CHECK(op->GetResource(context_.new_segment));
return status;
status = op->GetResource(context_.new_segment);
if (!status.ok())
return status;
created = context_.new_segment; created = context_.new_segment;
AddStepWithLsn(*created, context_.lsn); AddStepWithLsn(*created, context_.lsn);
return status; return Status::OK();
} }
Status Status
MergeOperation::CommitNewSegmentFile(const SegmentFileContext& context, SegmentFilePtr& created) { MergeOperation::CommitNewSegmentFile(const SegmentFileContext& context, SegmentFilePtr& created) {
// PXU TODO: Check element type and segment file mapping rules // PXU TODO: Check element type and segment file mapping rules
SegmentPtr new_segment; SegmentPtr new_segment;
auto status = CommitNewSegment(new_segment); STATUS_CHECK(CommitNewSegment(new_segment));
if (!status.ok()) auto ctx = context;
return status; ctx.segment_id = new_segment->GetID();
auto c = context; ctx.partition_id = new_segment->GetPartitionId();
c.segment_id = new_segment->GetID(); auto new_sf_op = std::make_shared<SegmentFileOperation>(ctx, GetStartedSS());
c.partition_id = new_segment->GetPartitionId(); STATUS_CHECK(new_sf_op->Push());
auto new_sf_op = std::make_shared<SegmentFileOperation>(c, GetStartedSS()); STATUS_CHECK(new_sf_op->GetResource(created));
status = new_sf_op->Push();
if (!status.ok())
return status;
status = new_sf_op->GetResource(created);
if (!status.ok())
return status;
context_.new_segment_files.push_back(created); context_.new_segment_files.push_back(created);
AddStepWithLsn(*created, context_.lsn); AddStepWithLsn(*created, context_.lsn);
return status; return Status::OK();
} }
Status Status
MergeOperation::DoExecute(Store& store) { MergeOperation::DoExecute(Store& store) {
// PXU TODO: // PXU TODO:
// 1. Check all requried field elements have related segment files // 1. Check all required field elements have related segment files
// 2. Check Stale and others // 2. Check Stale and others
SegmentCommitOperation op(context_, GetAdjustedSS()); SegmentCommitOperation sc_op(context_, GetAdjustedSS());
auto status = op(store); STATUS_CHECK(sc_op(store));
if (!status.ok()) STATUS_CHECK(sc_op.GetResource(context_.new_segment_commit));
return status;
status = op.GetResource(context_.new_segment_commit);
if (!status.ok())
return status;
AddStepWithLsn(*context_.new_segment_commit, context_.lsn); AddStepWithLsn(*context_.new_segment_commit, context_.lsn);
/* std::cout << GetRepr() << " POST_SC_MAP=("; */ /* std::cout << GetRepr() << " POST_SC_MAP=("; */
/* for (auto id : context_.new_segment_commit->GetMappings()) { */ /* for (auto id : context_.new_segment_commit->GetMappings()) { */
...@@ -264,14 +212,9 @@ MergeOperation::DoExecute(Store& store) { ...@@ -264,14 +212,9 @@ MergeOperation::DoExecute(Store& store) {
/* std::cout << ")" << std::endl; */ /* std::cout << ")" << std::endl; */
PartitionCommitOperation pc_op(context_, GetAdjustedSS()); PartitionCommitOperation pc_op(context_, GetAdjustedSS());
status = pc_op(store); STATUS_CHECK(pc_op(store));
if (!status.ok())
return status;
OperationContext cc_context; OperationContext cc_context;
status = pc_op.GetResource(cc_context.new_partition_commit); STATUS_CHECK(pc_op.GetResource(cc_context.new_partition_commit));
if (!status.ok())
return status;
AddStepWithLsn(*cc_context.new_partition_commit, context_.lsn); AddStepWithLsn(*cc_context.new_partition_commit, context_.lsn);
context_.new_partition_commit = cc_context.new_partition_commit; context_.new_partition_commit = cc_context.new_partition_commit;
...@@ -282,15 +225,11 @@ MergeOperation::DoExecute(Store& store) { ...@@ -282,15 +225,11 @@ MergeOperation::DoExecute(Store& store) {
/* std::cout << ")" << std::endl; */ /* std::cout << ")" << std::endl; */
CollectionCommitOperation cc_op(cc_context, GetAdjustedSS()); CollectionCommitOperation cc_op(cc_context, GetAdjustedSS());
status = cc_op(store); STATUS_CHECK(cc_op(store));
if (!status.ok()) STATUS_CHECK(cc_op.GetResource(context_.new_collection_commit));
return status;
status = cc_op.GetResource(context_.new_collection_commit);
if (!status.ok())
return status;
AddStepWithLsn(*context_.new_collection_commit, context_.lsn); AddStepWithLsn(*context_.new_collection_commit, context_.lsn);
return status; return Status::OK();
} }
GetSnapshotIDsOperation::GetSnapshotIDsOperation(ID_TYPE collection_id, bool reversed) GetSnapshotIDsOperation::GetSnapshotIDsOperation(ID_TYPE collection_id, bool reversed)
...@@ -345,15 +284,12 @@ DropPartitionOperation::GetRepr() const { ...@@ -345,15 +284,12 @@ DropPartitionOperation::GetRepr() const {
Status Status
DropPartitionOperation::DoExecute(Store& store) { DropPartitionOperation::DoExecute(Store& store) {
Status status;
PartitionPtr p; PartitionPtr p;
auto id = c_context_.id; auto id = c_context_.id;
if (id == 0) { if (id == 0) {
status = GetAdjustedSS()->GetPartitionId(c_context_.name, id); STATUS_CHECK(GetAdjustedSS()->GetPartitionId(c_context_.name, id));
c_context_.id = id; c_context_.id = id;
} }
if (!status.ok())
return status;
auto p_c = GetAdjustedSS()->GetPartitionCommitByPartitionId(id); auto p_c = GetAdjustedSS()->GetPartitionCommitByPartitionId(id);
if (!p_c) { if (!p_c) {
std::stringstream emsg; std::stringstream emsg;
...@@ -364,16 +300,11 @@ DropPartitionOperation::DoExecute(Store& store) { ...@@ -364,16 +300,11 @@ DropPartitionOperation::DoExecute(Store& store) {
OperationContext op_ctx; OperationContext op_ctx;
op_ctx.stale_partition_commit = p_c; op_ctx.stale_partition_commit = p_c;
auto op = CollectionCommitOperation(op_ctx, GetAdjustedSS()); auto cc_op = CollectionCommitOperation(op_ctx, GetAdjustedSS());
status = op(store); STATUS_CHECK(cc_op(store));
if (!status.ok()) STATUS_CHECK(cc_op.GetResource(context_.new_collection_commit));
return status;
status = op.GetResource(context_.new_collection_commit);
if (!status.ok())
return status;
AddStepWithLsn(*context_.new_collection_commit, c_context_.lsn); AddStepWithLsn(*context_.new_collection_commit, c_context_.lsn);
return status; return Status::OK();
} }
CreatePartitionOperation::CreatePartitionOperation(const OperationContext& context, ScopedSnapshotT prev_ss) CreatePartitionOperation::CreatePartitionOperation(const OperationContext& context, ScopedSnapshotT prev_ss)
...@@ -382,39 +313,28 @@ CreatePartitionOperation::CreatePartitionOperation(const OperationContext& conte ...@@ -382,39 +313,28 @@ CreatePartitionOperation::CreatePartitionOperation(const OperationContext& conte
Status Status
CreatePartitionOperation::PreCheck() { CreatePartitionOperation::PreCheck() {
Status status = BaseT::PreCheck(); STATUS_CHECK(BaseT::PreCheck());
if (!status.ok()) {
return status;
}
if (!context_.new_partition) { if (!context_.new_partition) {
std::stringstream emsg; std::stringstream emsg;
emsg << GetRepr() << ". Partition is missing"; emsg << GetRepr() << ". Partition is missing";
status = Status(SS_INVALID_CONTEX_ERROR, emsg.str()); return Status(SS_INVALID_CONTEX_ERROR, emsg.str());
} }
return status; return Status::OK();
} }
Status Status
CreatePartitionOperation::CommitNewPartition(const PartitionContext& context, PartitionPtr& partition) { CreatePartitionOperation::CommitNewPartition(const PartitionContext& context, PartitionPtr& partition) {
Status status;
auto op = std::make_shared<PartitionOperation>(context, GetStartedSS()); auto op = std::make_shared<PartitionOperation>(context, GetStartedSS());
status = op->Push(); STATUS_CHECK(op->Push());
if (!status.ok()) STATUS_CHECK(op->GetResource(partition));
return status;
status = op->GetResource(partition);
if (!status.ok())
return status;
context_.new_partition = partition; context_.new_partition = partition;
AddStepWithLsn(*partition, context_.lsn); AddStepWithLsn(*partition, context_.lsn);
return status; return Status::OK();
} }
Status Status
CreatePartitionOperation::DoExecute(Store& store) { CreatePartitionOperation::DoExecute(Store& store) {
Status status; STATUS_CHECK(CheckStale());
status = CheckStale();
if (!status.ok())
return status;
auto collection = GetAdjustedSS()->GetCollection(); auto collection = GetAdjustedSS()->GetCollection();
auto partition = context_.new_partition; auto partition = context_.new_partition;
...@@ -423,28 +343,21 @@ CreatePartitionOperation::DoExecute(Store& store) { ...@@ -423,28 +343,21 @@ CreatePartitionOperation::DoExecute(Store& store) {
OperationContext pc_context; OperationContext pc_context;
pc_context.new_partition = partition; pc_context.new_partition = partition;
auto pc_op = PartitionCommitOperation(pc_context, GetAdjustedSS()); auto pc_op = PartitionCommitOperation(pc_context, GetAdjustedSS());
status = pc_op(store); STATUS_CHECK(pc_op(store));
if (!status.ok()) STATUS_CHECK(pc_op.GetResource(pc));
return status;
status = pc_op.GetResource(pc);
if (!status.ok())
return status;
AddStepWithLsn(*pc, context_.lsn); AddStepWithLsn(*pc, context_.lsn);
OperationContext cc_context; OperationContext cc_context;
cc_context.new_partition_commit = pc; cc_context.new_partition_commit = pc;
context_.new_partition_commit = pc; context_.new_partition_commit = pc;
auto cc_op = CollectionCommitOperation(cc_context, GetAdjustedSS()); auto cc_op = CollectionCommitOperation(cc_context, GetAdjustedSS());
status = cc_op(store); STATUS_CHECK(cc_op(store));
if (!status.ok())
return status;
CollectionCommitPtr cc; CollectionCommitPtr cc;
status = cc_op.GetResource(cc); STATUS_CHECK(cc_op.GetResource(cc));
if (!status.ok())
return status;
AddStepWithLsn(*cc, context_.lsn); AddStepWithLsn(*cc, context_.lsn);
context_.new_collection_commit = cc; context_.new_collection_commit = cc;
return status; return Status::OK();
} }
CreateCollectionOperation::CreateCollectionOperation(const CreateCollectionContext& context) CreateCollectionOperation::CreateCollectionOperation(const CreateCollectionContext& context)
...@@ -536,12 +449,8 @@ CreateCollectionOperation::DoExecute(Store& store) { ...@@ -536,12 +449,8 @@ CreateCollectionOperation::DoExecute(Store& store) {
Status Status
CreateCollectionOperation::GetSnapshot(ScopedSnapshotT& ss) const { CreateCollectionOperation::GetSnapshot(ScopedSnapshotT& ss) const {
auto status = DoneRequired(); STATUS_CHECK(CheckDone());
if (!status.ok()) STATUS_CHECK(CheckIDSNotEmpty());
return status;
status = IDSNotEmptyRequried();
if (!status.ok())
return status;
if (!c_context_.collection_commit) { if (!c_context_.collection_commit) {
std::stringstream emsg; std::stringstream emsg;
emsg << GetRepr() << ". No snapshot is available"; emsg << GetRepr() << ". No snapshot is available";
...@@ -549,7 +458,7 @@ CreateCollectionOperation::GetSnapshot(ScopedSnapshotT& ss) const { ...@@ -549,7 +458,7 @@ CreateCollectionOperation::GetSnapshot(ScopedSnapshotT& ss) const {
} }
/* status = Snapshots::GetInstance().GetSnapshot(ss, c_context_.collection_commit->GetCollectionId()); */ /* status = Snapshots::GetInstance().GetSnapshot(ss, c_context_.collection_commit->GetCollectionId()); */
ss = context_.latest_ss; ss = context_.latest_ss;
return status; return Status::OK();
} }
Status Status
......
...@@ -42,7 +42,7 @@ struct SegmentFileContext { ...@@ -42,7 +42,7 @@ struct SegmentFileContext {
struct LoadOperationContext { struct LoadOperationContext {
ID_TYPE id = 0; ID_TYPE id = 0;
State status = INVALID; State state = INVALID;
std::string name; std::string name;
}; };
......
...@@ -42,9 +42,11 @@ class ResourceGCEvent : public Event { ...@@ -42,9 +42,11 @@ class ResourceGCEvent : public Event {
Status Status
Process() override { Process() override {
auto& store = Store::GetInstance();
/* mark resource as 'deleted' in meta */ /* mark resource as 'deleted' in meta */
auto sd_op = std::make_shared<SoftDeleteOperation<ResourceT>>(res_->GetID()); auto sd_op = std::make_shared<SoftDeleteOperation<ResourceT>>(res_->GetID());
STATUS_CHECK(sd_op->Push()); STATUS_CHECK((*sd_op)(store));
/* TODO: physically clean resource */ /* TODO: physically clean resource */
std::vector<std::string> res_file_list; std::vector<std::string> res_file_list;
...@@ -62,7 +64,7 @@ class ResourceGCEvent : public Event { ...@@ -62,7 +64,7 @@ class ResourceGCEvent : public Event {
/* remove resource from meta */ /* remove resource from meta */
auto hd_op = std::make_shared<HardDeleteOperation<ResourceT>>(res_->GetID()); auto hd_op = std::make_shared<HardDeleteOperation<ResourceT>>(res_->GetID());
STATUS_CHECK(hd_op->Push()); STATUS_CHECK((*hd_op)(store));
return Status::OK(); return Status::OK();
} }
......
...@@ -74,9 +74,7 @@ Operations::GetID() const { ...@@ -74,9 +74,7 @@ Operations::GetID() const {
Status Status
Operations::operator()(Store& store) { Operations::operator()(Store& store) {
auto status = PreCheck(); STATUS_CHECK(PreCheck());
if (!status.ok())
return status;
return ApplyToStore(store); return ApplyToStore(store);
} }
...@@ -114,9 +112,7 @@ Operations::PreCheck() { ...@@ -114,9 +112,7 @@ Operations::PreCheck() {
Status Status
Operations::Push(bool sync) { Operations::Push(bool sync) {
auto status = PreCheck(); STATUS_CHECK(PreCheck());
if (!status.ok())
return status;
return OperationExecutor::GetInstance().Submit(shared_from_this(), sync); return OperationExecutor::GetInstance().Submit(shared_from_this(), sync);
} }
...@@ -128,66 +124,55 @@ Operations::DoCheckStale(ScopedSnapshotT& latest_snapshot) const { ...@@ -128,66 +124,55 @@ Operations::DoCheckStale(ScopedSnapshotT& latest_snapshot) const {
Status Status
Operations::CheckStale(const CheckStaleFunc& checker) const { Operations::CheckStale(const CheckStaleFunc& checker) const {
decltype(prev_ss_) latest_ss; decltype(prev_ss_) latest_ss;
auto status = Snapshots::GetInstance().GetSnapshot(latest_ss, prev_ss_->GetCollection()->GetID()); STATUS_CHECK(Snapshots::GetInstance().GetSnapshot(latest_ss, prev_ss_->GetCollection()->GetID()));
if (!status.ok())
return status;
if (prev_ss_->GetID() != latest_ss->GetID()) { if (prev_ss_->GetID() != latest_ss->GetID()) {
if (checker) { if (checker) {
status = checker(latest_ss); STATUS_CHECK(checker(latest_ss));
} else { } else {
status = DoCheckStale(latest_ss); STATUS_CHECK(DoCheckStale(latest_ss));
} }
} }
return status; return Status::OK();
} }
Status Status
Operations::DoneRequired() const { Operations::CheckDone() const {
Status status;
if (!done_) { if (!done_) {
std::stringstream emsg; std::stringstream emsg;
emsg << GetRepr() << ". Should be done"; emsg << GetRepr() << ". Should be done";
status = Status(SS_CONSTRAINT_CHECK_ERROR, emsg.str()); return Status(SS_CONSTRAINT_CHECK_ERROR, emsg.str());
} }
return status; return Status::OK();
} }
Status Status
Operations::IDSNotEmptyRequried() const { Operations::CheckIDSNotEmpty() const {
Status status;
if (ids_.size() == 0) { if (ids_.size() == 0) {
std::stringstream emsg; std::stringstream emsg;
emsg << GetRepr() << ". No rsource is available"; emsg << GetRepr() << ". No resource available";
status = Status(SS_CONSTRAINT_CHECK_ERROR, emsg.str()); return Status(SS_CONSTRAINT_CHECK_ERROR, emsg.str());
} }
return status; return Status::OK();
} }
Status Status
Operations::PrevSnapshotRequried() const { Operations::CheckPrevSnapshot() const {
Status status;
if (!prev_ss_) { if (!prev_ss_) {
std::stringstream emsg; std::stringstream emsg;
emsg << GetRepr() << ". Prev snapshot is requried"; emsg << GetRepr() << ". Previous snapshot required";
status = Status(SS_CONSTRAINT_CHECK_ERROR, emsg.str()); return Status(SS_CONSTRAINT_CHECK_ERROR, emsg.str());
} }
return status; return Status::OK();
} }
Status Status
Operations::GetSnapshot(ScopedSnapshotT& ss) const { Operations::GetSnapshot(ScopedSnapshotT& ss) const {
auto status = PrevSnapshotRequried(); STATUS_CHECK(CheckPrevSnapshot());
if (!status.ok()) STATUS_CHECK(CheckDone());
return status; STATUS_CHECK(CheckIDSNotEmpty());
status = DoneRequired();
if (!status.ok())
return status;
status = IDSNotEmptyRequried();
if (!status.ok())
return status;
/* status = Snapshots::GetInstance().GetSnapshot(ss, prev_ss_->GetCollectionId(), ids_.back()); */ /* status = Snapshots::GetInstance().GetSnapshot(ss, prev_ss_->GetCollectionId(), ids_.back()); */
ss = context_.latest_ss; ss = context_.latest_ss;
return status; return Status::OK();
} }
const Status& const Status&
...@@ -219,29 +204,23 @@ Operations::OnSnapshotStale() { ...@@ -219,29 +204,23 @@ Operations::OnSnapshotStale() {
Status Status
Operations::OnExecute(Store& store) { Operations::OnExecute(Store& store) {
auto status = PreExecute(store); STATUS_CHECK(PreExecute(store));
if (!status.ok()) { STATUS_CHECK(DoExecute(store));
return status; STATUS_CHECK(PostExecute(store));
} return Status::OK();
status = DoExecute(store);
if (!status.ok()) {
return status;
}
return PostExecute(store);
} }
Status Status
Operations::PreExecute(Store& store) { Operations::PreExecute(Store& store) {
Status status;
if (GetStartedSS() && type_ == OperationsType::W_Compound) { if (GetStartedSS() && type_ == OperationsType::W_Compound) {
Snapshots::GetInstance().GetSnapshot(context_.prev_ss, GetStartedSS()->GetCollectionId()); STATUS_CHECK(Snapshots::GetInstance().GetSnapshot(context_.prev_ss, GetStartedSS()->GetCollectionId()));
if (!context_.prev_ss) { if (!context_.prev_ss) {
status = OnSnapshotDropped(); STATUS_CHECK(OnSnapshotDropped());
} else if (prev_ss_->GetID() != context_.prev_ss->GetID()) { } else if (prev_ss_->GetID() != context_.prev_ss->GetID()) {
status = OnSnapshotStale(); STATUS_CHECK(OnSnapshotStale());
} }
} }
return status; return Status::OK();
} }
Status Status
......
...@@ -152,11 +152,11 @@ class Operations : public std::enable_shared_from_this<Operations> { ...@@ -152,11 +152,11 @@ class Operations : public std::enable_shared_from_this<Operations> {
FailureString() const; FailureString() const;
Status Status
DoneRequired() const; CheckDone() const;
Status Status
IDSNotEmptyRequried() const; CheckIDSNotEmpty() const;
Status Status
PrevSnapshotRequried() const; CheckPrevSnapshot() const;
Status Status
ApplyRollBack(Store&); ApplyRollBack(Store&);
...@@ -212,20 +212,16 @@ class CommitOperation : public Operations { ...@@ -212,20 +212,16 @@ class CommitOperation : public Operations {
if (wait) { if (wait) {
WaitToFinish(); WaitToFinish();
} }
auto status = DoneRequired(); STATUS_CHECK(CheckDone());
if (!status.ok()) STATUS_CHECK(CheckIDSNotEmpty());
return status;
status = IDSNotEmptyRequried();
if (!status.ok())
return status;
resource_->SetID(ids_[0]); resource_->SetID(ids_[0]);
res = resource_; res = resource_;
return status; return Status::OK();
} }
protected: protected:
Status Status
ResourceNotNullRequired() const { CheckResource() const {
Status status; Status status;
if (!resource_) if (!resource_)
return Status(SS_CONSTRAINT_CHECK_ERROR, "No specified resource"); return Status(SS_CONSTRAINT_CHECK_ERROR, "No specified resource");
...@@ -261,19 +257,15 @@ class LoadOperation : public Operations { ...@@ -261,19 +257,15 @@ class LoadOperation : public Operations {
if (wait) { if (wait) {
WaitToFinish(); WaitToFinish();
} }
auto status = DoneRequired(); STATUS_CHECK(CheckDone());
if (!status.ok()) STATUS_CHECK(CheckResource());
return status;
status = ResourceNotNullRequired();
if (!status.ok())
return status;
res = resource_; res = resource_;
return status; return Status::OK();
} }
protected: protected:
Status Status
ResourceNotNullRequired() const { CheckResource() const {
Status status; Status status;
if (!resource_) if (!resource_)
return Status(SS_CONSTRAINT_CHECK_ERROR, "No specified resource"); return Status(SS_CONSTRAINT_CHECK_ERROR, "No specified resource");
...@@ -298,14 +290,10 @@ class SoftDeleteOperation : public Operations { ...@@ -298,14 +290,10 @@ class SoftDeleteOperation : public Operations {
if (wait) { if (wait) {
WaitToFinish(); WaitToFinish();
} }
auto status = DoneRequired(); STATUS_CHECK(CheckDone());
if (!status.ok()) STATUS_CHECK(CheckIDSNotEmpty());
return status;
status = IDSNotEmptyRequried();
if (!status.ok())
return status;
res = resource_; res = resource_;
return status; return Status::OK();
} }
Status Status
......
...@@ -17,6 +17,8 @@ ...@@ -17,6 +17,8 @@
#include <mutex> #include <mutex>
#include <string> #include <string>
#include <thread> #include <thread>
#include "db/snapshot/Event.h"
#include "db/snapshot/EventExecutor.h"
#include "db/snapshot/Operations.h" #include "db/snapshot/Operations.h"
#include "db/snapshot/ResourceTypes.h" #include "db/snapshot/ResourceTypes.h"
#include "db/snapshot/ScopedResource.h" #include "db/snapshot/ScopedResource.h"
...@@ -140,7 +142,8 @@ class ResourceHolder { ...@@ -140,7 +142,8 @@ class ResourceHolder {
virtual void virtual void
OnNoRefCallBack(ResourcePtr resource) { OnNoRefCallBack(ResourcePtr resource) {
HardDelete(resource->GetID()); auto evt_ptr = std::make_shared<ResourceGCEvent<ResourceT>>(resource);
EventExecutor::GetInstance().Submit(evt_ptr);
Release(resource->GetID()); Release(resource->GetID());
} }
......
...@@ -130,14 +130,12 @@ class LoadOperation<Collection> : public Operations { ...@@ -130,14 +130,12 @@ class LoadOperation<Collection> : public Operations {
if (wait) { if (wait) {
WaitToFinish(); WaitToFinish();
} }
auto status = DoneRequired(); STATUS_CHECK(CheckDone());
if (!status.ok())
return status;
if (!resource_) { if (!resource_) {
return Status(SS_NOT_FOUND_ERROR, "No specified resource"); return Status(SS_NOT_FOUND_ERROR, "No specified resource");
} }
res = resource_; res = resource_;
return status; return Status::OK();
} }
protected: protected:
......
...@@ -16,47 +16,47 @@ ...@@ -16,47 +16,47 @@
namespace milvus::engine::snapshot { namespace milvus::engine::snapshot {
Collection::Collection(const std::string& name, ID_TYPE id, LSN_TYPE lsn, State status, TS_TYPE created_on, Collection::Collection(const std::string& name, ID_TYPE id, LSN_TYPE lsn, State state, TS_TYPE created_on,
TS_TYPE updated_on) TS_TYPE updated_on)
: NameField(name), : NameField(name),
IdField(id), IdField(id),
LsnField(lsn), LsnField(lsn),
StatusField(status), StateField(state),
CreatedOnField(created_on), CreatedOnField(created_on),
UpdatedOnField(updated_on) { UpdatedOnField(updated_on) {
} }
CollectionCommit::CollectionCommit(ID_TYPE collection_id, ID_TYPE schema_id, const MappingT& mappings, ID_TYPE id, CollectionCommit::CollectionCommit(ID_TYPE collection_id, ID_TYPE schema_id, const MappingT& mappings, ID_TYPE id,
LSN_TYPE lsn, State status, TS_TYPE created_on, TS_TYPE updated_on) LSN_TYPE lsn, State state, TS_TYPE created_on, TS_TYPE updated_on)
: CollectionIdField(collection_id), : CollectionIdField(collection_id),
SchemaIdField(schema_id), SchemaIdField(schema_id),
MappingsField(mappings), MappingsField(mappings),
IdField(id), IdField(id),
LsnField(lsn), LsnField(lsn),
StatusField(status), StateField(state),
CreatedOnField(created_on), CreatedOnField(created_on),
UpdatedOnField(updated_on) { UpdatedOnField(updated_on) {
} }
Partition::Partition(const std::string& name, ID_TYPE collection_id, ID_TYPE id, LSN_TYPE lsn, State status, Partition::Partition(const std::string& name, ID_TYPE collection_id, ID_TYPE id, LSN_TYPE lsn, State state,
TS_TYPE created_on, TS_TYPE updated_on) TS_TYPE created_on, TS_TYPE updated_on)
: NameField(name), : NameField(name),
CollectionIdField(collection_id), CollectionIdField(collection_id),
IdField(id), IdField(id),
LsnField(lsn), LsnField(lsn),
StatusField(status), StateField(state),
CreatedOnField(created_on), CreatedOnField(created_on),
UpdatedOnField(updated_on) { UpdatedOnField(updated_on) {
} }
PartitionCommit::PartitionCommit(ID_TYPE collection_id, ID_TYPE partition_id, const MappingT& mappings, ID_TYPE id, PartitionCommit::PartitionCommit(ID_TYPE collection_id, ID_TYPE partition_id, const MappingT& mappings, ID_TYPE id,
LSN_TYPE lsn, State status, TS_TYPE created_on, TS_TYPE updated_on) LSN_TYPE lsn, State state, TS_TYPE created_on, TS_TYPE updated_on)
: CollectionIdField(collection_id), : CollectionIdField(collection_id),
PartitionIdField(partition_id), PartitionIdField(partition_id),
MappingsField(mappings), MappingsField(mappings),
IdField(id), IdField(id),
LsnField(lsn), LsnField(lsn),
StatusField(status), StateField(state),
CreatedOnField(created_on), CreatedOnField(created_on),
UpdatedOnField(updated_on) { UpdatedOnField(updated_on) {
} }
...@@ -70,18 +70,18 @@ PartitionCommit::ToString() const { ...@@ -70,18 +70,18 @@ PartitionCommit::ToString() const {
for (auto sc_id : GetMappings()) { for (auto sc_id : GetMappings()) {
ss << sc_id << ", "; ss << sc_id << ", ";
} }
ss << ") status=" << GetStatus() << " "; ss << ") state=" << GetState() << " ";
return ss.str(); return ss.str();
} }
Segment::Segment(ID_TYPE collection_id, ID_TYPE partition_id, ID_TYPE num, ID_TYPE id, LSN_TYPE lsn, State status, Segment::Segment(ID_TYPE collection_id, ID_TYPE partition_id, ID_TYPE num, ID_TYPE id, LSN_TYPE lsn, State state,
TS_TYPE created_on, TS_TYPE updated_on) TS_TYPE created_on, TS_TYPE updated_on)
: CollectionIdField(collection_id), : CollectionIdField(collection_id),
PartitionIdField(partition_id), PartitionIdField(partition_id),
NumField(num), NumField(num),
IdField(id), IdField(id),
LsnField(lsn), LsnField(lsn),
StatusField(status), StateField(state),
CreatedOnField(created_on), CreatedOnField(created_on),
UpdatedOnField(updated_on) { UpdatedOnField(updated_on) {
} }
...@@ -94,19 +94,19 @@ Segment::ToString() const { ...@@ -94,19 +94,19 @@ Segment::ToString() const {
ss << "partition_id=" << GetPartitionId() << ", "; ss << "partition_id=" << GetPartitionId() << ", ";
ss << "collection_id=" << GetCollectionId() << ", "; ss << "collection_id=" << GetCollectionId() << ", ";
ss << "num=" << (NUM_TYPE)GetNum() << ", "; ss << "num=" << (NUM_TYPE)GetNum() << ", ";
ss << "status=" << GetStatus() << ", "; ss << "state=" << GetState() << ", ";
return ss.str(); return ss.str();
} }
SegmentCommit::SegmentCommit(ID_TYPE schema_id, ID_TYPE partition_id, ID_TYPE segment_id, const MappingT& mappings, SegmentCommit::SegmentCommit(ID_TYPE schema_id, ID_TYPE partition_id, ID_TYPE segment_id, const MappingT& mappings,
ID_TYPE id, LSN_TYPE lsn, State status, TS_TYPE created_on, TS_TYPE updated_on) ID_TYPE id, LSN_TYPE lsn, State state, TS_TYPE created_on, TS_TYPE updated_on)
: SchemaIdField(schema_id), : SchemaIdField(schema_id),
PartitionIdField(partition_id), PartitionIdField(partition_id),
SegmentIdField(segment_id), SegmentIdField(segment_id),
MappingsField(mappings), MappingsField(mappings),
IdField(id), IdField(id),
LsnField(lsn), LsnField(lsn),
StatusField(status), StateField(state),
CreatedOnField(created_on), CreatedOnField(created_on),
UpdatedOnField(updated_on) { UpdatedOnField(updated_on) {
} }
...@@ -118,66 +118,66 @@ SegmentCommit::ToString() const { ...@@ -118,66 +118,66 @@ SegmentCommit::ToString() const {
ss << "id=" << GetID() << ", "; ss << "id=" << GetID() << ", ";
ss << "partition_id=" << GetPartitionId() << ", "; ss << "partition_id=" << GetPartitionId() << ", ";
ss << "segment_id=" << GetSegmentId() << ", "; ss << "segment_id=" << GetSegmentId() << ", ";
ss << "status=" << GetStatus() << ", "; ss << "state=" << GetState() << ", ";
return ss.str(); return ss.str();
} }
SegmentFile::SegmentFile(ID_TYPE collection_id, ID_TYPE partition_id, ID_TYPE segment_id, ID_TYPE field_element_id, SegmentFile::SegmentFile(ID_TYPE collection_id, ID_TYPE partition_id, ID_TYPE segment_id, ID_TYPE field_element_id,
ID_TYPE id, LSN_TYPE lsn, State status, TS_TYPE created_on, TS_TYPE updated_on) ID_TYPE id, LSN_TYPE lsn, State state, TS_TYPE created_on, TS_TYPE updated_on)
: CollectionIdField(collection_id), : CollectionIdField(collection_id),
PartitionIdField(partition_id), PartitionIdField(partition_id),
SegmentIdField(segment_id), SegmentIdField(segment_id),
FieldElementIdField(field_element_id), FieldElementIdField(field_element_id),
IdField(id), IdField(id),
LsnField(lsn), LsnField(lsn),
StatusField(status), StateField(state),
CreatedOnField(created_on), CreatedOnField(created_on),
UpdatedOnField(updated_on) { UpdatedOnField(updated_on) {
} }
SchemaCommit::SchemaCommit(ID_TYPE collection_id, const MappingT& mappings, ID_TYPE id, LSN_TYPE lsn, State status, SchemaCommit::SchemaCommit(ID_TYPE collection_id, const MappingT& mappings, ID_TYPE id, LSN_TYPE lsn, State state,
TS_TYPE created_on, TS_TYPE updated_on) TS_TYPE created_on, TS_TYPE updated_on)
: CollectionIdField(collection_id), : CollectionIdField(collection_id),
MappingsField(mappings), MappingsField(mappings),
IdField(id), IdField(id),
LsnField(lsn), LsnField(lsn),
StatusField(status), StateField(state),
CreatedOnField(created_on), CreatedOnField(created_on),
UpdatedOnField(updated_on) { UpdatedOnField(updated_on) {
} }
Field::Field(const std::string& name, NUM_TYPE num, ID_TYPE id, LSN_TYPE lsn, State status, TS_TYPE created_on, Field::Field(const std::string& name, NUM_TYPE num, ID_TYPE id, LSN_TYPE lsn, State state, TS_TYPE created_on,
TS_TYPE updated_on) TS_TYPE updated_on)
: NameField(name), : NameField(name),
NumField(num), NumField(num),
IdField(id), IdField(id),
LsnField(lsn), LsnField(lsn),
StatusField(status), StateField(state),
CreatedOnField(created_on), CreatedOnField(created_on),
UpdatedOnField(updated_on) { UpdatedOnField(updated_on) {
} }
FieldCommit::FieldCommit(ID_TYPE collection_id, ID_TYPE field_id, const MappingT& mappings, ID_TYPE id, LSN_TYPE lsn, FieldCommit::FieldCommit(ID_TYPE collection_id, ID_TYPE field_id, const MappingT& mappings, ID_TYPE id, LSN_TYPE lsn,
State status, TS_TYPE created_on, TS_TYPE updated_on) State state, TS_TYPE created_on, TS_TYPE updated_on)
: CollectionIdField(collection_id), : CollectionIdField(collection_id),
FieldIdField(field_id), FieldIdField(field_id),
MappingsField(mappings), MappingsField(mappings),
IdField(id), IdField(id),
LsnField(lsn), LsnField(lsn),
StatusField(status), StateField(state),
CreatedOnField(created_on), CreatedOnField(created_on),
UpdatedOnField(updated_on) { UpdatedOnField(updated_on) {
} }
FieldElement::FieldElement(ID_TYPE collection_id, ID_TYPE field_id, const std::string& name, FTYPE_TYPE ftype, FieldElement::FieldElement(ID_TYPE collection_id, ID_TYPE field_id, const std::string& name, FTYPE_TYPE ftype,
ID_TYPE id, LSN_TYPE lsn, State status, TS_TYPE created_on, TS_TYPE updated_on) ID_TYPE id, LSN_TYPE lsn, State state, TS_TYPE created_on, TS_TYPE updated_on)
: CollectionIdField(collection_id), : CollectionIdField(collection_id),
FieldIdField(field_id), FieldIdField(field_id),
NameField(name), NameField(name),
FtypeField(ftype), FtypeField(ftype),
IdField(id), IdField(id),
LsnField(lsn), LsnField(lsn),
StatusField(status), StateField(state),
CreatedOnField(created_on), CreatedOnField(created_on),
UpdatedOnField(updated_on) { UpdatedOnField(updated_on) {
} }
......
...@@ -46,46 +46,46 @@ class MappingsField { ...@@ -46,46 +46,46 @@ class MappingsField {
MappingT mappings_; MappingT mappings_;
}; };
class StatusField { class StateField {
public: public:
explicit StatusField(State status = PENDING) : status_(status) { explicit StateField(State state = PENDING) : state_(state) {
} }
State State
GetStatus() const { GetState() const {
return status_; return state_;
} }
bool bool
IsActive() const { IsActive() const {
return status_ == ACTIVE; return state_ == ACTIVE;
} }
bool bool
IsDeactive() const { IsDeactive() const {
return status_ == DEACTIVE; return state_ == DEACTIVE;
} }
bool bool
Activate() { Activate() {
if (IsDeactive()) if (IsDeactive())
return false; return false;
status_ = ACTIVE; state_ = ACTIVE;
return true; return true;
} }
void void
Deactivate() { Deactivate() {
status_ = DEACTIVE; state_ = DEACTIVE;
} }
void void
ResetStatus() { ResetStatus() {
status_ = PENDING; state_ = PENDING;
} }
protected: protected:
State status_; State state_;
}; };
class LsnField { class LsnField {
...@@ -297,7 +297,7 @@ class Collection : public BaseResource, ...@@ -297,7 +297,7 @@ class Collection : public BaseResource,
public NameField, public NameField,
public IdField, public IdField,
public LsnField, public LsnField,
public StatusField, public StateField,
public CreatedOnField, public CreatedOnField,
public UpdatedOnField { public UpdatedOnField {
public: public:
...@@ -319,7 +319,7 @@ class CollectionCommit : public BaseResource, ...@@ -319,7 +319,7 @@ class CollectionCommit : public BaseResource,
public MappingsField, public MappingsField,
public IdField, public IdField,
public LsnField, public LsnField,
public StatusField, public StateField,
public CreatedOnField, public CreatedOnField,
public UpdatedOnField { public UpdatedOnField {
public: public:
...@@ -342,7 +342,7 @@ class Partition : public BaseResource, ...@@ -342,7 +342,7 @@ class Partition : public BaseResource,
public CollectionIdField, public CollectionIdField,
public IdField, public IdField,
public LsnField, public LsnField,
public StatusField, public StateField,
public CreatedOnField, public CreatedOnField,
public UpdatedOnField { public UpdatedOnField {
public: public:
...@@ -364,7 +364,7 @@ class PartitionCommit : public BaseResource, ...@@ -364,7 +364,7 @@ class PartitionCommit : public BaseResource,
public MappingsField, public MappingsField,
public IdField, public IdField,
public LsnField, public LsnField,
public StatusField, public StateField,
public CreatedOnField, public CreatedOnField,
public UpdatedOnField { public UpdatedOnField {
public: public:
...@@ -392,7 +392,7 @@ class Segment : public BaseResource, ...@@ -392,7 +392,7 @@ class Segment : public BaseResource,
public NumField, public NumField,
public IdField, public IdField,
public LsnField, public LsnField,
public StatusField, public StateField,
public CreatedOnField, public CreatedOnField,
public UpdatedOnField { public UpdatedOnField {
public: public:
...@@ -419,7 +419,7 @@ class SegmentCommit : public BaseResource, ...@@ -419,7 +419,7 @@ class SegmentCommit : public BaseResource,
public MappingsField, public MappingsField,
public IdField, public IdField,
public LsnField, public LsnField,
public StatusField, public StateField,
public CreatedOnField, public CreatedOnField,
public UpdatedOnField { public UpdatedOnField {
public: public:
...@@ -448,7 +448,7 @@ class SegmentFile : public BaseResource, ...@@ -448,7 +448,7 @@ class SegmentFile : public BaseResource,
public FieldElementIdField, public FieldElementIdField,
public IdField, public IdField,
public LsnField, public LsnField,
public StatusField, public StateField,
public CreatedOnField, public CreatedOnField,
public UpdatedOnField { public UpdatedOnField {
public: public:
...@@ -472,7 +472,7 @@ class SchemaCommit : public BaseResource, ...@@ -472,7 +472,7 @@ class SchemaCommit : public BaseResource,
public MappingsField, public MappingsField,
public IdField, public IdField,
public LsnField, public LsnField,
public StatusField, public StateField,
public CreatedOnField, public CreatedOnField,
public UpdatedOnField { public UpdatedOnField {
public: public:
...@@ -496,7 +496,7 @@ class Field : public BaseResource, ...@@ -496,7 +496,7 @@ class Field : public BaseResource,
public NumField, public NumField,
public IdField, public IdField,
public LsnField, public LsnField,
public StatusField, public StateField,
public CreatedOnField, public CreatedOnField,
public UpdatedOnField { public UpdatedOnField {
public: public:
...@@ -518,7 +518,7 @@ class FieldCommit : public BaseResource, ...@@ -518,7 +518,7 @@ class FieldCommit : public BaseResource,
public MappingsField, public MappingsField,
public IdField, public IdField,
public LsnField, public LsnField,
public StatusField, public StateField,
public CreatedOnField, public CreatedOnField,
public UpdatedOnField { public UpdatedOnField {
public: public:
...@@ -544,7 +544,7 @@ class FieldElement : public BaseResource, ...@@ -544,7 +544,7 @@ class FieldElement : public BaseResource,
public FtypeField, public FtypeField,
public IdField, public IdField,
public LsnField, public LsnField,
public StatusField, public StateField,
public CreatedOnField, public CreatedOnField,
public UpdatedOnField { public UpdatedOnField {
public: public:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册