diff options
author | Antonin Kral <a.kral@bobek.cz> | 2011-12-15 09:35:47 +0100 |
---|---|---|
committer | Antonin Kral <a.kral@bobek.cz> | 2011-12-15 09:35:47 +0100 |
commit | f0d9a01bccdaeb466c12c92057914bbfef59526c (patch) | |
tree | 7679efa1f0daf7d1d906882a15dc77af6b7aef32 /scripting/engine.cpp | |
parent | 5d342a758c6095b4d30aba0750b54f13b8916f51 (diff) | |
download | mongodb-f0d9a01bccdaeb466c12c92057914bbfef59526c.tar.gz |
Imported Upstream version 2.0.2
Diffstat (limited to 'scripting/engine.cpp')
-rw-r--r-- | scripting/engine.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/scripting/engine.cpp b/scripting/engine.cpp index 1982940..7d13cb7 100644 --- a/scripting/engine.cpp +++ b/scripting/engine.cpp @@ -26,7 +26,7 @@ namespace mongo { int Scope::_numScopes = 0; - Scope::Scope() : _localDBName("") , _loadedVersion(0) { + Scope::Scope() : _localDBName("") , _loadedVersion(0), _numTimeUsed(0) { _numScopes++; } @@ -284,7 +284,8 @@ namespace mongo { void done( const string& pool , Scope * s ) { scoped_lock lk( _mutex ); list<Scope*> & l = _pools[pool]; - if ( l.size() > 10 ) { + // make we dont keep to many contexts, or use them for too long + if ( l.size() > 10 || s->getTimeUsed() > 100 ) { delete s; } else { @@ -302,6 +303,7 @@ namespace mongo { Scope * s = l.back(); l.pop_back(); s->reset(); + s->incTimeUsed(); return s; } |