diff --git a/db/instance.cpp b/db/instance.cpp index 769b911d10b..e436ba2f9ca 100644 --- a/db/instance.cpp +++ b/db/instance.cpp @@ -497,6 +497,7 @@ namespace mongo { if( ntoreturn ) ss << " ntoreturn:" << ntoreturn; + time_t start; int pass = 0; bool exhaust = false; QueryResult* msgdata; @@ -509,6 +510,17 @@ namespace mongo { catch ( GetMoreWaitException& ) { exhaust = false; massert(13073, "shutting down", !inShutdown() ); + if( pass == 0 ) { + start = time(0); + } + else { + if( time(0) - start >= 4 ) { + // after about 4 seconds, return. this is a sanity check. pass stops at 1000 normally + // for DEV this helps and also if sleep is highly inaccurate on a platform. we want to + // return occasionally so slave can checkpoint. + pass = 10000; + } + } pass++; DEV sleepmillis(20); diff --git a/db/query.cpp b/db/query.cpp index 5a3ee585fee..6aa8a04712a 100644 --- a/db/query.cpp +++ b/db/query.cpp @@ -324,7 +324,6 @@ namespace mongo { while ( 1 ) { if ( !c->ok() ) { -// log() << "TEMP Tailable : " << c->tailable() << ' ' << (queryOptions & QueryOption_AwaitData) << endl; if ( c->tailable() ) { /* when a tailable cursor hits "EOF", ok() goes false, and current() is null. however advance() can still be retries as a reactivation attempt. when there is new data, it will