Storage Engine API
write_unit_of_work.h
Go to the documentation of this file.
1 
29 #pragma once
30 
31 #include <memory>
32 
33 #include "mongo/base/disallow_copying.h"
34 
35 namespace mongo {
36 
37 class OperationContext;
38 
51 
52 public:
57  kNotInUnitOfWork, // not in a unit of work, no writes allowed
58  kActiveUnitOfWork, // in a unit of work that still may either commit or abort
59  kFailedUnitOfWork // in a unit of work that has failed and must be aborted
60  };
61 
62  WriteUnitOfWork(OperationContext* opCtx);
63 
65 
70  static std::unique_ptr<WriteUnitOfWork> createForSnapshotResume(OperationContext* opCtx,
71  RecoveryUnitState ruState);
72 
79 
89  void prepare();
90 
96  void commit();
97 
98 private:
99  WriteUnitOfWork() = default; // for createForSnapshotResume
100 
101  OperationContext* _opCtx;
102 
103  bool _toplevel;
104 
105  bool _committed = false;
106  bool _prepared = false;
107  bool _released = false;
108 };
109 
110 } // namespace mongo
~WriteUnitOfWork()
Definition: write_unit_of_work.cpp:46
Definition: write_unit_of_work.h:59
void prepare()
Transitions the WriteUnitOfWork to the "prepared" state.
Definition: write_unit_of_work.cpp:82
Copyright (C) 2014 MongoDB Inc.
Definition: bson_collection_catalog_entry.cpp:38
static std::unique_ptr< WriteUnitOfWork > createForSnapshotResume(OperationContext *opCtx, RecoveryUnitState ruState)
Creates a top-level WriteUnitOfWork without changing RecoveryUnit or Locker state.
Definition: write_unit_of_work.cpp:60
bool _committed
Definition: write_unit_of_work.h:105
RecoveryUnitState release()
Releases the OperationContext RecoveryUnit and Locker objects from management without changing state...
Definition: write_unit_of_work.cpp:69
void commit()
Commits the WriteUnitOfWork.
Definition: write_unit_of_work.cpp:92
bool _released
Definition: write_unit_of_work.h:107
Definition: write_unit_of_work.h:57
bool _toplevel
Definition: write_unit_of_work.h:103
MONGO_DISALLOW_COPYING(WriteUnitOfWork)
bool _prepared
Definition: write_unit_of_work.h:106
The WriteUnitOfWork is an RAII type that begins a storage engine write unit of work on both the Locke...
Definition: write_unit_of_work.h:49
Definition: write_unit_of_work.h:58
OperationContext * _opCtx
Definition: write_unit_of_work.h:101
RecoveryUnitState
The RecoveryUnitState is used to ensure valid state transitions.
Definition: write_unit_of_work.h:56
Collection *const OperationContext *const opCtx
Definition: collection_impl.cpp:80