void CurOp::reportState(BSONObjBuilder* builder) { builder->append("opid", _opNum); bool a = _active && _start; builder->append("active", a); if( a ) { builder->append("secs_running", elapsedSeconds() ); builder->append("microsecs_running", static_cast<long long int>(elapsedMicros()) ); } builder->append( "op" , opToString( _op ) ); // Fill out "ns" from our namespace member (and if it's not available, fall back to the // OpDebug namespace member). builder->append("ns", !_ns.empty() ? _ns.toString() : _debug.ns.toString()); if (_op == dbInsert) { _query.append(*builder, "insert"); } else { _query.append(*builder, "query"); } if ( !debug().planSummary.empty() ) { builder->append( "planSummary" , debug().planSummary.toString() ); } if( !_remote.empty() ) { builder->append("client", _remote.toString()); } if ( ! _message.empty() ) { if ( _progressMeter.isActive() ) { StringBuilder buf; buf << _message.toString() << " " << _progressMeter.toString(); builder->append( "msg" , buf.str() ); BSONObjBuilder sub( builder->subobjStart( "progress" ) ); sub.appendNumber( "done" , (long long)_progressMeter.done() ); sub.appendNumber( "total" , (long long)_progressMeter.total() ); sub.done(); } else { builder->append( "msg" , _message.toString() ); } } if( killPending() ) builder->append("killPending", true); if (!getGlobalEnvironment()->getGlobalStorageEngine()->supportsDocLocking()) builder->append( "numYields" , _numYields ); }
void recordStatsForTopCommand(OperationContext* txn) { auto curOp = CurOp::get(txn); const int writeLocked = 1; Top::get(txn->getClient()->getServiceContext()) .record(txn, curOp->getNS(), curOp->getLogicalOp(), writeLocked, curOp->elapsedMicros(), curOp->isCommand(), curOp->getReadWriteType()); }
void CurOp::reportState(BSONObjBuilder* builder) { builder->append("opid", _opNum); bool a = _active && _start; builder->append("active", a); if( a ) { builder->append("secs_running", elapsedSeconds() ); builder->append("microsecs_running", static_cast<long long int>(elapsedMicros()) ); } builder->append( "op" , opToString( _op ) ); builder->append("ns", _ns.toString()); if (_op == dbInsert) { _query.append(*builder, "insert"); } else { _query.append(*builder, "query"); } if ( !debug().planSummary.empty() ) { builder->append( "planSummary" , debug().planSummary.toString() ); } if( !_remote.empty() ) { builder->append("client", _remote.toString()); } if ( ! _message.empty() ) { if ( _progressMeter.isActive() ) { StringBuilder buf; buf << _message.toString() << " " << _progressMeter.toString(); builder->append( "msg" , buf.str() ); BSONObjBuilder sub( builder->subobjStart( "progress" ) ); sub.appendNumber( "done" , (long long)_progressMeter.done() ); sub.appendNumber( "total" , (long long)_progressMeter.total() ); sub.done(); } else { builder->append( "msg" , _message.toString() ); } } if( killPending() ) builder->append("killPending", true); builder->append( "numYields" , _numYields ); builder->append( "lockStats" , _lockStat.report() ); }
BSONObj CurOp::info() { BSONObjBuilder b; b.append("opid", _opNum); bool a = _active && _start; b.append("active", a); if( a ) { b.append("secs_running", elapsedSeconds() ); b.append("microsecs_running", static_cast<long long int>(elapsedMicros()) ); } b.append( "op" , opToString( _op ) ); b.append("ns", _ns); if (_op == dbInsert) { _query.append(b, "insert"); } else { _query.append(b , "query"); } if ( !debug().planSummary.empty() ) { b.append( "planSummary" , debug().planSummary.toString() ); } if( !_remote.empty() ) { b.append("client", _remote.toString()); } if ( _client ) { b.append( "desc" , _client->desc() ); if ( _client->_threadId.size() ) b.append( "threadId" , _client->_threadId ); if ( _client->_connectionId ) b.appendNumber( "connectionId" , _client->_connectionId ); _client->_ls.reportState(b); } if ( ! _message.empty() ) { if ( _progressMeter.isActive() ) { StringBuilder buf; buf << _message.toString() << " " << _progressMeter.toString(); b.append( "msg" , buf.str() ); BSONObjBuilder sub( b.subobjStart( "progress" ) ); sub.appendNumber( "done" , (long long)_progressMeter.done() ); sub.appendNumber( "total" , (long long)_progressMeter.total() ); sub.done(); } else { b.append( "msg" , _message.toString() ); } } if( killPending() ) b.append("killPending", true); b.append( "numYields" , _numYields ); b.append( "lockStats" , _lockStat.report() ); return b.obj(); }