diff options
Diffstat (limited to 'src/mongo/scripting')
-rw-r--r-- | src/mongo/scripting/engine.cpp | 3 | ||||
-rw-r--r-- | src/mongo/scripting/engine.h | 1 | ||||
-rw-r--r-- | src/mongo/scripting/mozjs/implscope.cpp | 38 | ||||
-rw-r--r-- | src/mongo/scripting/mozjs/implscope.h | 11 | ||||
-rw-r--r-- | src/mongo/scripting/mozjs/mongo.cpp | 76 | ||||
-rw-r--r-- | src/mongo/scripting/mozjs/mongo.h | 7 | ||||
-rw-r--r-- | src/mongo/scripting/mozjs/proxyscope.cpp | 4 | ||||
-rw-r--r-- | src/mongo/scripting/mozjs/proxyscope.h | 2 |
8 files changed, 20 insertions, 122 deletions
diff --git a/src/mongo/scripting/engine.cpp b/src/mongo/scripting/engine.cpp index cd5e5bcd767..57a5d98f1e6 100644 --- a/src/mongo/scripting/engine.cpp +++ b/src/mongo/scripting/engine.cpp @@ -419,9 +419,6 @@ public: void init(const BSONObj* data) { _real->init(data); } - void localConnectForDbEval(OperationContext* opCtx, const char* dbName) { - invariant(!"localConnectForDbEval should only be called from dbEval"); - } void setLocalDB(const string& dbName) { _real->setLocalDB(dbName); } diff --git a/src/mongo/scripting/engine.h b/src/mongo/scripting/engine.h index 2ed64157e01..34b3351f08b 100644 --- a/src/mongo/scripting/engine.h +++ b/src/mongo/scripting/engine.h @@ -63,7 +63,6 @@ public: init(&o); } - virtual void localConnectForDbEval(OperationContext* opCtx, const char* dbName) = 0; virtual void externalSetup() = 0; virtual void setLocalDB(const std::string& localDBName) { _localDBName = localDBName; diff --git a/src/mongo/scripting/mozjs/implscope.cpp b/src/mongo/scripting/mozjs/implscope.cpp index f7f6577fe23..660bc7f59b9 100644 --- a/src/mongo/scripting/mozjs/implscope.cpp +++ b/src/mongo/scripting/mozjs/implscope.cpp @@ -449,7 +449,6 @@ MozJSImplScope::MozJSImplScope(MozJSScriptEngine* engine) _minKeyProto(_context), _mongoExternalProto(_context), _mongoHelpersProto(_context), - _mongoLocalProto(_context), _nativeFunctionProto(_context), _numberDecimalProto(_context), _numberIntProto(_context), @@ -816,48 +815,11 @@ void MozJSImplScope::sleep(Milliseconds ms) { lk, ms.toSystemDuration(), [this] { return !_killStatus.isOK(); })); } -void MozJSImplScope::localConnectForDbEval(OperationContext* opCtx, const char* dbName) { - - _runSafely([this, &opCtx, &dbName] { - if (_connectState == ConnectState::External) - uasserted(12510, "externalSetup already called, can't call localConnect"); - if (_connectState == ConnectState::Local) { - if (_localDBName == dbName) - return; - uasserted(12511, - str::stream() << "localConnect previously called with name " << _localDBName); - } - - // NOTE: order is important here. the following methods must be called after - // the above conditional statements. - - _connectState = ConnectState::Local; - _localDBName = dbName; - - loadStored(opCtx); - - // install db access functions in the global object - installDBAccess(); - - // install the Mongo function object and instantiate the 'db' global - _mongoLocalProto.install(_global); - execCoreFiles(); - - const char* const makeMongo = "const _mongo = new Mongo()"; - exec(makeMongo, "local connect 2", false, true, true, 0); - - std::string makeDB = str::stream() << "const db = _mongo.getDB(\"" << dbName << "\");"; - exec(makeDB, "local connect 3", false, true, true, 0); - }); -} - void MozJSImplScope::externalSetup() { _runSafely([&] { if (_connectState == ConnectState::External) return; - if (_connectState == ConnectState::Local) - uasserted(12512, "localConnect already called, can't call externalSetup"); // install db access functions in the global object installDBAccess(); diff --git a/src/mongo/scripting/mozjs/implscope.h b/src/mongo/scripting/mozjs/implscope.h index 72fe9db3f72..930dae82a2e 100644 --- a/src/mongo/scripting/mozjs/implscope.h +++ b/src/mongo/scripting/mozjs/implscope.h @@ -103,8 +103,6 @@ public: void unregisterOperation() override; - void localConnectForDbEval(OperationContext* opCtx, const char* dbName) override; - void externalSetup() override; std::string getError() override; @@ -245,11 +243,6 @@ public: } template <typename T> - typename std::enable_if<std::is_same<T, MongoLocalInfo>::value, WrapType<T>&>::type getProto() { - return _mongoLocalProto; - } - - template <typename T> typename std::enable_if<std::is_same<T, NativeFunctionInfo>::value, WrapType<T>&>::type getProto() { return _nativeFunctionProto; @@ -389,12 +382,9 @@ private: /** * The connection state of the scope. - * - * This is for dbeval and the shell */ enum class ConnectState : char { Not, - Local, External, }; @@ -453,7 +443,6 @@ private: WrapType<MinKeyInfo> _minKeyProto; WrapType<MongoExternalInfo> _mongoExternalProto; WrapType<MongoHelpersInfo> _mongoHelpersProto; - WrapType<MongoLocalInfo> _mongoLocalProto; WrapType<NativeFunctionInfo> _nativeFunctionProto; WrapType<NumberDecimalInfo> _numberDecimalProto; WrapType<NumberIntInfo> _numberIntProto; diff --git a/src/mongo/scripting/mozjs/mongo.cpp b/src/mongo/scripting/mozjs/mongo.cpp index aa08c2a4ad8..22a6a728461 100644 --- a/src/mongo/scripting/mozjs/mongo.cpp +++ b/src/mongo/scripting/mozjs/mongo.cpp @@ -62,36 +62,26 @@ namespace mozjs { const JSFunctionSpec MongoBase::methods[] = { MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(auth, MongoExternalInfo), MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(close, MongoExternalInfo), - MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO( - copyDatabaseWithSCRAM, MongoLocalInfo, MongoExternalInfo), - MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(cursorFromId, MongoLocalInfo, MongoExternalInfo), - MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO( - cursorHandleFromId, MongoLocalInfo, MongoExternalInfo), - MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(find, MongoLocalInfo, MongoExternalInfo), - MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO( - getClientRPCProtocols, MongoLocalInfo, MongoExternalInfo), - MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO( - getServerRPCProtocols, MongoLocalInfo, MongoExternalInfo), - MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(insert, MongoLocalInfo, MongoExternalInfo), - MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO( - isReplicaSetConnection, MongoLocalInfo, MongoExternalInfo), + MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(copyDatabaseWithSCRAM, MongoExternalInfo), + MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(cursorFromId, MongoExternalInfo), + MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(cursorHandleFromId, MongoExternalInfo), + MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(find, MongoExternalInfo), + MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(getClientRPCProtocols, MongoExternalInfo), + MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(getServerRPCProtocols, MongoExternalInfo), + MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(insert, MongoExternalInfo), + MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(isReplicaSetConnection, MongoExternalInfo), MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(_markNodeAsFailed, MongoExternalInfo), - MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(logout, MongoLocalInfo, MongoExternalInfo), - MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(remove, MongoLocalInfo, MongoExternalInfo), - MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(runCommand, MongoLocalInfo, MongoExternalInfo), - MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO( - runCommandWithMetadata, MongoLocalInfo, MongoExternalInfo), - MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO( - setClientRPCProtocols, MongoLocalInfo, MongoExternalInfo), - MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(update, MongoLocalInfo, MongoExternalInfo), - MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO( - getMinWireVersion, MongoLocalInfo, MongoExternalInfo), - MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO( - getMaxWireVersion, MongoLocalInfo, MongoExternalInfo), - MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO( - isReplicaSetMember, MongoLocalInfo, MongoExternalInfo), - MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(isMongos, MongoLocalInfo, MongoExternalInfo), - MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(_startSession, MongoLocalInfo, MongoExternalInfo), + MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(logout, MongoExternalInfo), + MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(remove, MongoExternalInfo), + MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(runCommand, MongoExternalInfo), + MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(runCommandWithMetadata, MongoExternalInfo), + MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(setClientRPCProtocols, MongoExternalInfo), + MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(update, MongoExternalInfo), + MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(getMinWireVersion, MongoExternalInfo), + MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(getMaxWireVersion, MongoExternalInfo), + MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(isReplicaSetMember, MongoExternalInfo), + MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(isMongos, MongoExternalInfo), + MONGO_ATTACH_JS_CONSTRAINED_METHOD_NO_PROTO(_startSession, MongoExternalInfo), JS_FS_END, }; @@ -156,12 +146,7 @@ void setHiddenMongo(JSContext* cx, JS::RootedObject newMongo(cx); auto scope = getScope(cx); - auto isLocalInfo = scope->getProto<MongoLocalInfo>().instanceOf(args.thisv()); - if (isLocalInfo) { - scope->getProto<MongoLocalInfo>().newObject(&newMongo); - } else { - scope->getProto<MongoExternalInfo>().newObject(&newMongo); - } + scope->getProto<MongoExternalInfo>().newObject(&newMongo); auto host = resPtr->getServerAddress(); JS_SetPrivate(newMongo, @@ -715,27 +700,6 @@ void MongoBase::Functions::_markNodeAsFailed::call(JSContext* cx, JS::CallArgs a args.rval().setUndefined(); } -void MongoLocalInfo::construct(JSContext* cx, JS::CallArgs args) { - auto scope = getScope(cx); - - if (args.length() != 0) - uasserted(ErrorCodes::BadValue, "local Mongo constructor takes no args"); - - auto opCtx = scope->getOpContext(); - auto conn = DBDirectClientFactory::get(opCtx).create(opCtx); - - JS::RootedObject thisv(cx); - scope->getProto<MongoLocalInfo>().newObject(&thisv); - ObjectWrapper o(cx, thisv); - - JS_SetPrivate(thisv, scope->trackedNew<std::shared_ptr<DBClientBase>>(conn.release())); - - o.setBoolean(InternedString::slaveOk, false); - o.setString(InternedString::host, "EMBEDDED"); - - args.rval().setObjectOrNull(thisv); -} - void MongoExternalInfo::construct(JSContext* cx, JS::CallArgs args) { auto scope = getScope(cx); diff --git a/src/mongo/scripting/mozjs/mongo.h b/src/mongo/scripting/mozjs/mongo.h index 36fbc46a172..2329cc82f1e 100644 --- a/src/mongo/scripting/mozjs/mongo.h +++ b/src/mongo/scripting/mozjs/mongo.h @@ -75,13 +75,6 @@ struct MongoBase : public BaseInfo { }; /** - * The dbeval variant of "Mongo" - */ -struct MongoLocalInfo : public MongoBase { - static void construct(JSContext* cx, JS::CallArgs args); -}; - -/** * The shell variant of "Mongo" */ struct MongoExternalInfo : public MongoBase { diff --git a/src/mongo/scripting/mozjs/proxyscope.cpp b/src/mongo/scripting/mozjs/proxyscope.cpp index 60e979bac74..4ed77bf7938 100644 --- a/src/mongo/scripting/mozjs/proxyscope.cpp +++ b/src/mongo/scripting/mozjs/proxyscope.cpp @@ -95,10 +95,6 @@ void MozJSProxyScope::unregisterOperation() { run([&] { _implScope->unregisterOperation(); }); } -void MozJSProxyScope::localConnectForDbEval(OperationContext* opCtx, const char* dbName) { - run([&] { _implScope->localConnectForDbEval(opCtx, dbName); }); -} - void MozJSProxyScope::externalSetup() { run([&] { _implScope->externalSetup(); }); } diff --git a/src/mongo/scripting/mozjs/proxyscope.h b/src/mongo/scripting/mozjs/proxyscope.h index 0b936de20ed..56b792a8583 100644 --- a/src/mongo/scripting/mozjs/proxyscope.h +++ b/src/mongo/scripting/mozjs/proxyscope.h @@ -122,8 +122,6 @@ public: void unregisterOperation() override; - void localConnectForDbEval(OperationContext* opCtx, const char* dbName) override; - void externalSetup() override; std::string getError() override; |