summaryrefslogtreecommitdiff
path: root/src/mongo/scripting/engine.h
diff options
context:
space:
mode:
authoralabid <alabidan@gmail.com>2015-02-13 14:58:11 -0500
committeralabid <alabidan@gmail.com>2015-02-18 00:05:25 -0500
commitffb3d64e1ae2f3dc84b3bbcb5d23ef85f87a9415 (patch)
tree29cf9fd254e2dc44f64d2e3a5954a8488285a22e /src/mongo/scripting/engine.h
parent628c4fb2d19eab538f99ceb6c78981f20093fd20 (diff)
downloadmongo-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.h14
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