summaryrefslogtreecommitdiff
path: root/src/mongo/db/pagefault.cpp
diff options
context:
space:
mode:
authorEliot Horowitz <eliot@10gen.com>2012-01-06 17:22:15 -0500
committerEliot Horowitz <eliot@10gen.com>2012-01-06 17:29:28 -0500
commitdce1de62f11a47462c9b1fa56338d45633d32208 (patch)
treee18b997d3bcd57ae4cbf1fb31c459897f587659c /src/mongo/db/pagefault.cpp
parent0e6ca07040fd2793f5921063f380df37b1e3168f (diff)
downloadmongo-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.cpp11
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;