コード例 #1
0
ファイル: replset_commands.cpp プロジェクト: dpercy/mongo
        bool _run(OperationContext* txn, const string& , BSONObj& cmdObj, int, string& errmsg, BSONObjBuilder& result, bool fromRepl) {
            if( cmdObj["replSetReconfig"].type() != Object ) {
                errmsg = "no configuration specified";
                return false;
            }

            ReplicationCoordinator::ReplSetReconfigArgs parsedArgs;
            parsedArgs.newConfigObj =  cmdObj["replSetReconfig"].Obj();
            parsedArgs.force = cmdObj.hasField("force") && cmdObj["force"].trueValue();
            Status status = getGlobalReplicationCoordinator()->processReplSetReconfig(txn,
                                                                                      parsedArgs,
                                                                                      &result);
            if (status.isOK() && !parsedArgs.force) {
                logOpInitiate(txn, BSON("msg" << "Reconfig set" << 
                                        "version" << parsedArgs.newConfigObj["version"]));
            }
            return appendCommandStatus(result, status);
        }
コード例 #2
0
ファイル: rs_config.cpp プロジェクト: CoolCloud/mongo
    /* comment MUST only be set when initiating the set by the initiator */
    void ReplSetConfig::saveConfigLocally(bo comment) {
        checkRsConfig();
        log() << "replSet info saving a newer config version to local.system.replset" << rsLog;
        {
            writelock lk("");
            Client::Context cx( rsConfigNs );
            cx.db()->flushFiles(true);

            //theReplSet->lastOpTimeWritten = ??;
            //rather than above, do a logOp()? probably
            BSONObj o = asBson();
            Helpers::putSingletonGod(rsConfigNs.c_str(), o, false/*logOp=false; local db so would work regardless...*/);
            if( !comment.isEmpty() )
                logOpInitiate(comment);

            cx.db()->flushFiles(true);
        }
        DEV log() << "replSet saveConfigLocally done" << rsLog;
    }
 void ReplicationCoordinatorExternalStateImpl::initiateOplog(OperationContext* txn) {
     createOplog(txn);
     logOpInitiate(txn, BSON("msg" << "initiating set"));
 }