summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--s/cursors.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/s/cursors.cpp b/s/cursors.cpp
index cf2735b1748..eb445762bef 100644
--- a/s/cursors.cpp
+++ b/s/cursors.cpp
@@ -265,13 +265,16 @@ namespace mongo {
void CursorCache::doTimeouts() {
long long now = Listener::getElapsedTimeMillis();
scoped_lock lk( _mutex );
- for ( MapSharded::iterator i=_cursors.begin(); i!=_cursors.end(); ++i ) {
+ MapSharded::iterator i=_cursors.begin();
+ while ( i!=_cursors.end() ) {
+
long long idleFor = i->second->idleTime( now );
if ( idleFor < TIMEOUT ) {
+ ++i;
continue;
}
log() << "killing old cursor " << i->second->getId() << " idle for: " << idleFor << "ms" << endl; // TODO: make log(1)
- _cursors.erase( i );
+ _cursors.erase( i++ );
}
}