diff options
author | Eliot Horowitz <eliot@10gen.com> | 2012-01-06 17:22:15 -0500 |
---|---|---|
committer | Eliot Horowitz <eliot@10gen.com> | 2012-01-06 17:29:28 -0500 |
commit | dce1de62f11a47462c9b1fa56338d45633d32208 (patch) | |
tree | e18b997d3bcd57ae4cbf1fb31c459897f587659c /src/mongo/db/pagefault.cpp | |
parent | 0e6ca07040fd2793f5921063f380df37b1e3168f (diff) | |
download | mongo-dce1de62f11a47462c9b1fa56338d45633d32208.tar.gz |
helper method Client::allowedToThrowPageFaultException and some PageFault* cleaning
Diffstat (limited to 'src/mongo/db/pagefault.cpp')
-rw-r--r-- | src/mongo/db/pagefault.cpp | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/src/mongo/db/pagefault.cpp b/src/mongo/db/pagefault.cpp index 1c8a874da29..d1f980d83d9 100644 --- a/src/mongo/db/pagefault.cpp +++ b/src/mongo/db/pagefault.cpp @@ -11,9 +11,8 @@ namespace mongo { PageFaultException::PageFaultException(Record *_r) { - assert( cc().inPageFaultRetryableSection() ); + assert( cc().allowedToThrowPageFaultException() ); cc().getPageFaultRetryableSection()->didLap(); - assert( cc().getPageFaultRetryableSection()->laps() < 1000 ); r = _r; era = LockMongoFilesShared::getEra(); } @@ -31,21 +30,17 @@ namespace mongo { } PageFaultRetryableSection::~PageFaultRetryableSection() { - cc()._pageFaultRetryableSection = old; + cc()._pageFaultRetryableSection = 0; } PageFaultRetryableSection::PageFaultRetryableSection() { _laps = 0; - old = cc()._pageFaultRetryableSection; + assert( cc()._pageFaultRetryableSection == 0 ); if( d.dbMutex.atLeastReadLocked() ) { cc()._pageFaultRetryableSection = 0; if( debug || logLevel > 2 ) { LOGSOME << "info PageFaultRetryableSection will not yield, already locked upon reaching" << endl; } } - else if( cc()._pageFaultRetryableSection ) { - cc()._pageFaultRetryableSection = 0; - dlog(2) << "info nested PageFaultRetryableSection will not yield on fault" << endl; - } else { cc()._pageFaultRetryableSection = this; cc()._hasWrittenThisPass = false; |