summaryrefslogtreecommitdiff
path: root/src/mongo/scripting/mozjs
diff options
context:
space:
mode:
authorA. Jesse Jiryu Davis <jesse@mongodb.com>2018-12-06 23:15:36 -0500
committerA. Jesse Jiryu Davis <jesse@mongodb.com>2018-12-20 08:36:44 -0600
commitbf58b1ab2abfb2a3ab7a86c154f9f5954ed6f98c (patch)
tree558b52d1c2db71bb630ed38f9391db58cde986f4 /src/mongo/scripting/mozjs
parent759846ffced5ef84734bd917a99061edf44dd786 (diff)
downloadmongo-bf58b1ab2abfb2a3ab7a86c154f9f5954ed6f98c.tar.gz
SERVER-36902 Update jsTests for new shell transaction API
Diffstat (limited to 'src/mongo/scripting/mozjs')
-rw-r--r--src/mongo/scripting/mozjs/session.cpp15
-rw-r--r--src/mongo/scripting/mozjs/session.h2
2 files changed, 15 insertions, 2 deletions
diff --git a/src/mongo/scripting/mozjs/session.cpp b/src/mongo/scripting/mozjs/session.cpp
index 608ed26bd2e..477ab4024dc 100644
--- a/src/mongo/scripting/mozjs/session.cpp
+++ b/src/mongo/scripting/mozjs/session.cpp
@@ -46,12 +46,13 @@
namespace mongo {
namespace mozjs {
-const JSFunctionSpec SessionInfo::methods[7] = {
+const JSFunctionSpec SessionInfo::methods[8] = {
MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(end, SessionInfo),
MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(getId, SessionInfo),
MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(getTxnState, SessionInfo),
MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(setTxnState, SessionInfo),
MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(getTxnNumber, SessionInfo),
+ MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(setTxnNumber, SessionInfo),
MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(incrementTxnNumber, SessionInfo),
JS_FS_END,
};
@@ -86,6 +87,8 @@ StringData transactionStateName(SessionHolder::TransactionState state) {
case SessionHolder::TransactionState::kAborted:
return "aborted"_sd;
}
+
+ MONGO_UNREACHABLE;
}
SessionHolder::TransactionState transactionStateEnum(StringData name) {
@@ -202,6 +205,16 @@ void SessionInfo::Functions::getTxnNumber::call(JSContext* cx, JS::CallArgs args
ValueReader(cx, args.rval()).fromInt64(holder->txnNumber);
}
+void SessionInfo::Functions::setTxnNumber::call(JSContext* cx, JS::CallArgs args) {
+ auto holder = getHolder(args);
+ invariant(holder);
+ uassert(ErrorCodes::BadValue, "setTxnNumber takes 1 argument", args.length() == 1);
+
+ auto arg = args.get(0);
+ holder->txnNumber = ValueWriter(cx, arg).toInt64();
+ args.rval().setUndefined();
+}
+
void SessionInfo::Functions::incrementTxnNumber::call(JSContext* cx, JS::CallArgs args) {
auto holder = getHolder(args);
invariant(holder);
diff --git a/src/mongo/scripting/mozjs/session.h b/src/mongo/scripting/mozjs/session.h
index 845fdb34d35..15c5c950910 100644
--- a/src/mongo/scripting/mozjs/session.h
+++ b/src/mongo/scripting/mozjs/session.h
@@ -54,7 +54,7 @@ struct SessionInfo : public BaseInfo {
MONGO_DECLARE_JS_FUNCTION(incrementTxnNumber);
};
- static const JSFunctionSpec methods[7];
+ static const JSFunctionSpec methods[8];
static const char* const className;
static const unsigned classFlags = JSCLASS_HAS_PRIVATE;