summaryrefslogtreecommitdiff
path: root/db/mr.cpp
diff options
context:
space:
mode:
authorEliot Horowitz <eliot@10gen.com>2010-03-15 11:26:56 -0400
committerEliot Horowitz <eliot@10gen.com>2010-03-15 11:26:56 -0400
commit3c7fed91e55ebffe71fe554cf89990f79c9a954b (patch)
tree4ded72c2e526ed7bad34ff96ce35a362caa38852 /db/mr.cpp
parent2cf067a11f4c078ed51bf4e4e35c3c4d5f97d619 (diff)
downloadmongo-3c7fed91e55ebffe71fe554cf89990f79c9a954b.tar.gz
track progress of m/r in db.currentOp or web console SERVER-590
Diffstat (limited to 'db/mr.cpp')
-rw-r--r--db/mr.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/db/mr.cpp b/db/mr.cpp
index 6e77bbede66..c378886b7e1 100644
--- a/db/mr.cpp
+++ b/db/mr.cpp
@@ -377,7 +377,10 @@ namespace mongo {
bool run(const char *dbname, BSONObj& cmd, string& errmsg, BSONObjBuilder& result, bool fromRepl ){
Timer t;
Client::GodScope cg;
- MRSetup mr( cc().database()->name , cmd );
+ Client& client = cc();
+ CurOp * op = client.curop();
+
+ MRSetup mr( client.database()->name , cmd );
log(1) << "mr ns: " << mr.ns << endl;
@@ -401,7 +404,7 @@ namespace mongo {
MRTL * mrtl = new MRTL( state );
_tlmr.reset( mrtl );
- ProgressMeter pm( db.count( mr.ns , mr.filter ) );
+ ProgressMeter & pm = op->setMessage( "m/r: (1/3) emit phase" , db.count( mr.ns , mr.filter ) );
auto_ptr<DBClientCursor> cursor = db.query( mr.ns , mr.q );
long long mapTime = 0;
Timer mt;
@@ -428,6 +431,7 @@ namespace mongo {
if ( mr.limit && num >= mr.limit )
break;
}
+ pm.finished();
countsBuilder.append( "input" , num );
countsBuilder.append( "emit" , mrtl->numEmits );
@@ -438,7 +442,7 @@ namespace mongo {
timingBuilder.append( "emitLoop" , t.millis() );
// final reduce
-
+ op->setMessage( "m/r: (2/3) final reduce in memory" );
mrtl->reduceInMemory();
mrtl->dump();
@@ -448,7 +452,7 @@ namespace mongo {
BSONObj prev;
list<BSONObj> all;
- ProgressMeter fpm( db.count( mr.incLong ) );
+ pm = op->setMessage( "m/r: (3/3) final reduce to collection" , db.count( mr.incLong ) );
cursor = db.query( mr.incLong, Query().sort( sortKey ) );
while ( cursor->more() ){
@@ -464,12 +468,11 @@ namespace mongo {
all.clear();
prev = o;
all.push_back( o );
- fpm.hit();
+ pm.hit();
dbtemprelease tl;
}
-
state.finalReduce( all );
-
+ pm.finished();
_tlmr.reset( 0 );
}
catch ( ... ){