diff options
author | alabid <alabidan@gmail.com> | 2015-02-13 14:58:11 -0500 |
---|---|---|
committer | alabid <alabidan@gmail.com> | 2015-02-18 00:05:25 -0500 |
commit | ffb3d64e1ae2f3dc84b3bbcb5d23ef85f87a9415 (patch) | |
tree | 29cf9fd254e2dc44f64d2e3a5954a8488285a22e /src/mongo/scripting/engine.h | |
parent | 628c4fb2d19eab538f99ceb6c78981f20093fd20 (diff) | |
download | mongo-ffb3d64e1ae2f3dc84b3bbcb5d23ef85f87a9415.tar.gz |
SERVER-15192 Make dbhash and storedFuncMod logOp listeners rollback-safe
Diffstat (limited to 'src/mongo/scripting/engine.h')
-rw-r--r-- | src/mongo/scripting/engine.h | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/mongo/scripting/engine.h b/src/mongo/scripting/engine.h index e90f747fcfa..17717455588 100644 --- a/src/mongo/scripting/engine.h +++ b/src/mongo/scripting/engine.h @@ -31,6 +31,7 @@ #include "mongo/db/global_environment_experiment.h" #include "mongo/db/jsobj.h" +#include "mongo/platform/atomic_word.h" namespace mongo { typedef unsigned long long ScriptingFunction; @@ -148,7 +149,7 @@ namespace mongo { * if any changes are made to .system.js, call this * right now its just global - slightly inefficient, but a lot simpler */ - static void storedFuncMod(); + static void storedFuncMod(OperationContext *txn); static void validateObjectIdString(const std::string& str); @@ -177,14 +178,21 @@ namespace mongo { protected: friend class PooledScope; + + /** + * RecoveryUnit::Change subclass used to commit work for + * Scope::storedFuncMod logOp listener. + */ + class StoredFuncModLogOpHandler; + virtual FunctionCacheMap& getFunctionCache() { return _cachedFunctions; } virtual ScriptingFunction _createFunction(const char* code, ScriptingFunction functionNumber = 0) = 0; std::string _localDBName; - long long _loadedVersion; + int64_t _loadedVersion; std::set<std::string> _storedNames; - static long long _lastVersion; + static AtomicInt64 _lastVersion; FunctionCacheMap _cachedFunctions; int _numTimesUsed; bool _lastRetIsNativeCode; // v8 only: set to true if eval'd script returns a native func |