void printShardingVersionInfo(bool out) { if (out) { cout << mongosCommand << " " << mongodVersion() << " starting (--help for usage)" << endl; cout << "git version: " << gitVersion() << endl; cout << "build sys info: " << sysInfo() << endl; } else { log() << mongosCommand << " " << mongodVersion() << " starting (--help for usage)" << endl; printGitVersion(); printSysInfo(); } }
void doUnlockedStuff(stringstream& ss) { /* this is in the header already ss << "port: " << port << '\n'; */ ss << mongodVersion() << "\n"; ss << "git hash: " << gitVersion() << "\n"; ss << "sys info: " << sysInfo() << "\n"; ss << "\n"; ss << "dbwritelocked: " << dbMutex.info().isLocked() << " (initial)\n"; ss << "uptime: " << time(0)-started << " seconds\n"; if ( replAllDead ) ss << "<b>replication replAllDead=" << replAllDead << "</b>\n"; ss << "\nassertions:\n"; for ( int i = 0; i < 4; i++ ) { if ( lastAssert[i].isSet() ) { ss << "<b>"; if ( i == 3 ) ss << "usererr"; else ss << i; ss << "</b>" << ' ' << lastAssert[i].toString(); } } ss << "\nreplInfo: " << replInfo << '\n'; { boostlock bl(Client::clientsMutex); for( set<Client*>::iterator i = Client::clients.begin(); i != Client::clients.end(); i++ ) { Client *c = *i; CurOp& co = *(c->curop()); ss << "currentOp (unlocked): " << co.infoNoauth() << "\n"; } } }
/* versions 114 bad memory bug fixed 115 replay, opLogging */ void listen(int port) { log() << mongodVersion() << endl; printGitVersion(); printSysInfo(); pdfileInit(); //testTheDb(); log() << "waiting for connections on port " << port << endl; OurListener l(bind_ip, port); startReplication(); if ( !noHttpInterface ) boost::thread thr(webServerThread); if ( l.init() ) { registerListenerSocket( l.socket() ); l.listen(); } }
Status handlePreValidationMongodOptions(const moe::Environment& params, const std::vector<std::string>& args) { if (params.count("help")) { printMongodHelp(serverOptions); ::_exit(EXIT_SUCCESS); } if (params.count("version")) { cout << mongodVersion() << endl; printGitVersion(); printOpenSSLVersion(); ::_exit(EXIT_SUCCESS); } if (params.count("sysinfo")) { sysRuntimeInfo(); ::_exit(EXIT_SUCCESS); } return Status::OK(); }
bool handlePreValidationMongodOptions(const moe::Environment& params, const std::vector<std::string>& args) { if (params.count("help")) { printMongodHelp(moe::startupOptions); return false; } if (params.count("version")) { cout << mongodVersion() << endl; printGitVersion(); printOpenSSLVersion(); return false; } if (params.count("sysinfo")) { sysRuntimeInfo(); return false; } return true; }
void doUnlockedStuff(stringstream& ss) { /* this is in the header already ss << "port: " << port << '\n'; */ ss << mongodVersion() << "\n"; ss << "git hash: " << gitVersion() << "\n"; ss << "sys info: " << sysInfo() << "\n"; ss << "\n"; ss << "dbwritelocked: " << dbMutex.info().isLocked() << " (initial)\n"; ss << "uptime: " << time(0)-started << " seconds\n"; if ( replAllDead ) ss << "<b>replication replAllDead=" << replAllDead << "</b>\n"; ss << "\nassertions:\n"; for ( int i = 0; i < 4; i++ ) { if ( lastAssert[i].isSet() ) { ss << "<b>"; if ( i == 3 ) ss << "usererr"; else ss << i; ss << "</b>" << ' ' << lastAssert[i].toString(); } } ss << "\nreplInfo: " << replInfo << "\n\n"; ss << "Clients:\n"; ss << "<table border=1><tr align='left'><th>Thread</th><th>Current op</th>\n"; { boostlock bl(Client::clientsMutex); for( set<Client*>::iterator i = Client::clients.begin(); i != Client::clients.end(); i++ ) { Client *c = *i; CurOp& co = *(c->curop()); ss << "<tr><td>" << c->desc() << "</td><td"; BSONObj info = co.infoNoauth(); /* if( info.getIntField("inLock") > 0 ) ss << "style='color:red'"; else if( info.getIntField("inLock") < 0 ) ss << "style='color:green'"; */ ss << ">" << info << "</td></tr>\n"; } } ss << "</table>\n"; }
void _initAndListen(int listenPort ) { Client::initThread("initandlisten"); Database::_openAllFiles = false; Logstream::get().addGlobalTee( new RamLog("global") ); bool is32bit = sizeof(int*) == 4; { #if !defined(_WIN32) pid_t pid = getpid(); #else DWORD pid=GetCurrentProcessId(); #endif Nullstream& l = log(); l << "MongoDB starting : pid=" << pid << " port=" << cmdLine.port << " dbpath=" << dbpath; if( replSettings.master ) l << " master=" << replSettings.master; if( replSettings.slave ) l << " slave=" << (int) replSettings.slave; l << ( is32bit ? " 32" : " 64" ) << "-bit host=" << getHostNameCached() << endl; } DEV log() << "_DEBUG build (which is slower)" << endl; show_warnings(); log() << mongodVersion() << endl; printGitVersion(); printSysInfo(); printCommandLineOpts(); { stringstream ss; ss << endl; ss << "*********************************************************************" << endl; ss << " ERROR: dbpath (" << dbpath << ") does not exist." << endl; ss << " Create this directory or give existing directory in --dbpath." << endl; ss << " See http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo" << endl; ss << "*********************************************************************" << endl; uassert( 10296 , ss.str().c_str(), boost::filesystem::exists( dbpath ) ); } { stringstream ss; ss << "repairpath (" << repairpath << ") does not exist"; uassert( 12590 , ss.str().c_str(), boost::filesystem::exists( repairpath ) ); } acquirePathLock(forceRepair); boost::filesystem::remove_all( dbpath + "/_tmp/" ); FileAllocator::get()->start(); MONGO_ASSERT_ON_EXCEPTION_WITH_MSG( clearTmpFiles(), "clear tmp files" ); dur::startup(); if( cmdLine.durOptions & CmdLine::DurRecoverOnly ) return; // comes after getDur().startup() because this reads from the database clearTmpCollections(); checkIfReplMissingFromCommandLine(); Module::initAll(); if ( scriptingEnabled ) { ScriptEngine::setup(); globalScriptEngine->setCheckInterruptCallback( jsInterruptCallback ); globalScriptEngine->setGetInterruptSpecCallback( jsGetInterruptSpecCallback ); } repairDatabasesAndCheckVersion(); /* we didn't want to pre-open all files for the repair check above. for regular operation we do for read/write lock concurrency reasons. */ Database::_openAllFiles = true; if ( shouldRepairDatabases ) return; /* this is for security on certain platforms (nonce generation) */ srand((unsigned) (curTimeMicros() ^ startupSrandTimer.micros())); snapshotThread.go(); d.clientCursorMonitor.go(); PeriodicTask::theRunner->go(); startTTLBackgroundJob(); #ifndef _WIN32 CmdLine::launchOk(); #endif if( !noauth ) { // open admin db in case we need to use it later. TODO this is not the right way to // resolve this. Client::WriteContext c("admin",dbpath,false); } listen(listenPort); // listen() will return when exit code closes its socket. exitCleanly(EXIT_NET_ERROR); }
void _initAndListen(int listenPort, const char *appserverLoc = NULL) { bool is32bit = sizeof(int*) == 4; { #if !defined(_WIN32) pid_t pid = getpid(); #else DWORD pid=GetCurrentProcessId(); #endif Nullstream& l = log(); l << "MongoDB starting : pid=" << pid << " port=" << cmdLine.port << " dbpath=" << dbpath; if( replSettings.master ) l << " master=" << replSettings.master; if( replSettings.slave ) l << " slave=" << (int) replSettings.slave; l << ( is32bit ? " 32" : " 64" ) << "-bit " << endl; } DEV log() << "_DEBUG build (which is slower)" << endl; show_warnings(); log() << mongodVersion() << endl; printGitVersion(); printSysInfo(); { stringstream ss; ss << "dbpath (" << dbpath << ") does not exist"; uassert( 10296 , ss.str().c_str(), boost::filesystem::exists( dbpath ) ); } { stringstream ss; ss << "repairpath (" << repairpath << ") does not exist"; uassert( 12590 , ss.str().c_str(), boost::filesystem::exists( repairpath ) ); } acquirePathLock(); remove_all( dbpath + "/_tmp/" ); theFileAllocator().start(); BOOST_CHECK_EXCEPTION( clearTmpFiles() ); Client::initThread("initandlisten"); _diaglog.init(); clearTmpCollections(); Module::initAll(); #if 0 { stringstream indexpath; indexpath << dbpath << "/indexes.dat"; RecCache::tempStore.init(indexpath.str().c_str(), BucketSize); } #endif if ( useJNI ) { ScriptEngine::setup(); globalScriptEngine->setCheckInterruptCallback( jsInterruptCallback ); } repairDatabases(); /* we didn't want to pre-open all fiels for the repair check above. for regular operation we do for read/write lock concurrency reasons. */ Database::_openAllFiles = true; if ( shouldRepairDatabases ) return; /* this is for security on certain platforms (nonce generation) */ srand((unsigned) (curTimeMicros() ^ startupSrandTimer.micros())); snapshotThread.go(); clientCursorMonitor.go(); if( !cmdLine._replSet.empty() ) { replSet = true; ReplSetCmdline *replSetCmdline = new ReplSetCmdline(cmdLine._replSet); boost::thread t( boost::bind( &startReplSets, replSetCmdline) ); } listen(listenPort); // listen() will return when exit code closes its socket. exitCleanly(EXIT_NET_ERROR); }
void printShardingVersionInfo(){ log() << mongosCommand << " " << mongodVersion() << " starting (--help for usage)" << endl; printGitVersion(); printSysInfo(); }
void doUnlockedStuff(stringstream& ss) { /* this is in the header already ss << "port: " << port << '\n'; */ ss << mongodVersion() << "\n"; ss << "git hash: " << gitVersion() << "\n"; ss << "sys info: " << sysInfo() << "\n"; ss << "\n"; ss << "dbwritelocked: " << dbMutex.info().isLocked() << " (initial)\n"; ss << "uptime: " << time(0)-started << " seconds\n"; if ( replAllDead ) ss << "<b>replication replAllDead=" << replAllDead << "</b>\n"; ss << "\nassertions:\n"; for ( int i = 0; i < 4; i++ ) { if ( lastAssert[i].isSet() ) { ss << "<b>"; if ( i == 3 ) ss << "usererr"; else ss << i; ss << "</b>" << ' ' << lastAssert[i].toString(); } } ss << "\nreplInfo: " << replInfo << "\n\n"; ss << "Clients:\n"; ss << "<table border=1>"; ss << "<tr align='left'>" << "<th>Thread</th>" << "<th>OpId</th>" << "<th>Active</th>" << "<th>LockType</th>" << "<th>Waiting</th>" << "<th>SecsRunning</th>" << "<th>Op</th>" << "<th>NameSpace</th>" << "<th>Query</th>" << "<th>client</th>" << "<th>msg</th>" << "<th>progress</th>" << "</tr>\n"; { scoped_lock bl(Client::clientsMutex); for( set<Client*>::iterator i = Client::clients.begin(); i != Client::clients.end(); i++ ) { Client *c = *i; CurOp& co = *(c->curop()); ss << "<tr><td>" << c->desc() << "</td>"; tablecell( ss , co.opNum() ); tablecell( ss , co.active() ); tablecell( ss , co.getLockType() ); tablecell( ss , co.isWaitingForLock() ); if ( co.active() ) tablecell( ss , co.elapsedSeconds() ); else tablecell( ss , "" ); tablecell( ss , co.getOp() ); tablecell( ss , co.getNS() ); if ( co.haveQuery() ) tablecell( ss , co.query() ); else tablecell( ss , "" ); tablecell( ss , co.getRemoteString() ); tablecell( ss , co.getMessage() ); tablecell( ss , co.getProgressMeter().toString() ); ss << "</tr>"; } } ss << "</table>\n"; }