diff options
author | Eliot Horowitz <eliot@10gen.com> | 2010-03-15 11:26:56 -0400 |
---|---|---|
committer | Eliot Horowitz <eliot@10gen.com> | 2010-03-15 11:26:56 -0400 |
commit | 3c7fed91e55ebffe71fe554cf89990f79c9a954b (patch) | |
tree | 4ded72c2e526ed7bad34ff96ce35a362caa38852 /db/mr.cpp | |
parent | 2cf067a11f4c078ed51bf4e4e35c3c4d5f97d619 (diff) | |
download | mongo-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.cpp | 17 |
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 ( ... ){ |