summaryrefslogtreecommitdiff
path: root/src/mongo/db/operation_context_noop.h
diff options
context:
space:
mode:
authorAndy Schwerin <schwerin@mongodb.com>2015-05-22 15:24:52 -0400
committerAndy Schwerin <schwerin@mongodb.com>2015-05-29 10:28:03 -0400
commit4ea38c308da292f43e29d32b1b53b7324db0bafe (patch)
tree22d166a388262ae5837d0c4e44f42748194e3e47 /src/mongo/db/operation_context_noop.h
parent5c2d133871b2ad2adf6c617364d036ca25261f2d (diff)
downloadmongo-4ea38c308da292f43e29d32b1b53b7324db0bafe.tar.gz
SERVER-14995 Move operation id, lockState and client fields to OperationContext.
They have been moved from OperationContextImpl. Furthermore, the CurOp stack is now attached to OperationContext, instead of Client. With this change, an operation's lifetime is governed by the lifetime of an OperationContext object. The "_active" field of CurOp is therefore no longer meaingful. This required fixing the lifetime of OperationContext in a few places. A future change will adjust operation lifetime timing to time the lifetime of the OperationContext object, as well.
Diffstat (limited to 'src/mongo/db/operation_context_noop.h')
-rw-r--r--src/mongo/db/operation_context_noop.h35
1 files changed, 17 insertions, 18 deletions
diff --git a/src/mongo/db/operation_context_noop.h b/src/mongo/db/operation_context_noop.h
index a428042438c..254f553445b 100644
--- a/src/mongo/db/operation_context_noop.h
+++ b/src/mongo/db/operation_context_noop.h
@@ -39,25 +39,32 @@ namespace mongo {
class OperationContextNoop : public OperationContext {
public:
- OperationContextNoop(RecoveryUnit* ru)
- : _recoveryUnit(ru),
- _locker(new LockerNoop()) {
+ OperationContextNoop() : OperationContextNoop(new RecoveryUnitNoop()) {}
+
+ OperationContextNoop(RecoveryUnit* ru) : OperationContextNoop(nullptr, 0, ru) {}
+
+ OperationContextNoop(Client* client, unsigned int opId)
+ : OperationContextNoop(client, opId, new RecoveryUnitNoop()) {
}
- OperationContextNoop()
- : _recoveryUnit(new RecoveryUnitNoop()),
- _locker(new LockerNoop()) {
+ OperationContextNoop(Client* client, unsigned int opId, RecoveryUnit* ru)
+ : OperationContextNoop(client, opId, new LockerNoop(), ru) {
+ }
+ OperationContextNoop(Client* client, unsigned int opId, Locker* locker)
+ : OperationContextNoop(client, opId, locker, new RecoveryUnitNoop()) {
}
- virtual ~OperationContextNoop() { }
+ OperationContextNoop(Client* client, unsigned int opId, Locker* locker, RecoveryUnit* ru)
+ : OperationContext(client, opId, locker),
+ _recoveryUnit(ru) {
- virtual Client* getClient() const override {
- invariant(false);
- return NULL;
+ _locker.reset(lockState());
}
+ virtual ~OperationContextNoop() = default;
+
virtual RecoveryUnit* recoveryUnit() const override {
return _recoveryUnit.get();
}
@@ -74,10 +81,6 @@ namespace mongo {
return oldState;
}
- virtual Locker* lockState() const override {
- return _locker.get();
- }
-
virtual ProgressMeter* setMessage(const char * msg,
const std::string &name,
unsigned long long progressMeterTotal,
@@ -98,10 +101,6 @@ namespace mongo {
return std::string();
};
- virtual unsigned int getOpID() const override {
- return 0;
- }
-
void setReplicatedWrites(bool writesAreReplicated = true) override {}
bool writesAreReplicated() const override {