diff options
author | Eliot Horowitz <eliot@10gen.com> | 2014-10-22 10:14:46 -0400 |
---|---|---|
committer | Eliot Horowitz <eliot@10gen.com> | 2014-10-22 10:16:49 -0400 |
commit | 0da60795c42f4e93cc0d8913c0fdd93dd670da41 (patch) | |
tree | 9e152224da0dbb98412877323c55dfff7cd0657c | |
parent | 3340ca09d383bcdf257402bc9b264529429ea97a (diff) | |
download | mongo-0da60795c42f4e93cc0d8913c0fdd93dd670da41.tar.gz |
SERVER-15711: revert changes to flush lock ordering an increase buffer size
-rw-r--r-- | src/mongo/db/concurrency/lock_mgr_new.cpp | 31 | ||||
-rw-r--r-- | src/mongo/db/concurrency/lock_state.cpp | 13 | ||||
-rw-r--r-- | src/mongo/db/storage/mmap_v1/dur.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/storage/mmap_v1/dur.h | 2 |
4 files changed, 9 insertions, 39 deletions
diff --git a/src/mongo/db/concurrency/lock_mgr_new.cpp b/src/mongo/db/concurrency/lock_mgr_new.cpp index dd211912116..7ce283cb6a7 100644 --- a/src/mongo/db/concurrency/lock_mgr_new.cpp +++ b/src/mongo/db/concurrency/lock_mgr_new.cpp @@ -251,15 +251,8 @@ namespace mongo { if (request->status == LockRequest::STATUS_NEW) { invariant(request->recursiveCount == 1); - // The flush lock must be FIFO ordered or else we will starve the dur threads and not - // block new writers. This means that if anyone is blocking on a mustFIFO resource we - // must get in line, even if we don't conflict with the grantedModes and could take the - // lock immediately. - const bool mustFIFO = (resId.getType() == RESOURCE_MMAPV1_FLUSH); - // New lock request - if (conflicts(mode, lock->grantedModes) - || (mustFIFO && conflicts(mode, lock->conflictModes))) { + if (conflicts(mode, lock->grantedModes)) { request->status = LockRequest::STATUS_WAITING; request->mode = mode; request->convertMode = MODE_NONE; @@ -712,6 +705,7 @@ namespace mongo { void LockHead::addToConflictQueue(LockRequest* request) { invariant(request->next == NULL); invariant(request->prev == NULL); + if (conflictQueueBegin == NULL) { invariant(conflictQueueEnd == NULL); @@ -724,24 +718,11 @@ namespace mongo { else { invariant(conflictQueueEnd != NULL); - // durThread always jumps to the front of the queue - const bool queueAtFront = (request->lock->resourceId.getType() == RESOURCE_MMAPV1_FLUSH) - && (request->mode == MODE_X || request->mode == MODE_S); - if (queueAtFront) { - request->next = conflictQueueBegin; - request->prev = NULL; - - conflictQueueBegin->prev = request; - conflictQueueBegin = request; - } - else { - request->prev = conflictQueueEnd; - request->next = NULL; - - conflictQueueEnd->next = request; - conflictQueueEnd = request; - } + request->prev = conflictQueueEnd; + request->next = NULL; + conflictQueueEnd->next = request; + conflictQueueEnd = request; } } diff --git a/src/mongo/db/concurrency/lock_state.cpp b/src/mongo/db/concurrency/lock_state.cpp index 38d22f69138..480cd95ab9b 100644 --- a/src/mongo/db/concurrency/lock_state.cpp +++ b/src/mongo/db/concurrency/lock_state.cpp @@ -724,18 +724,7 @@ namespace mongo { AutoAcquireFlushLockForMMAPV1Commit::AutoAcquireFlushLockForMMAPV1Commit(Locker* locker) : _locker(locker) { - int attempt = 0; - while ( 1 ) { - LockResult res = _locker->lock(resourceIdMMAPV1Flush, MODE_X, 10); - if ( res == LOCK_OK ) - break; - invariant( res == LOCK_TIMEOUT ); - if ( ++attempt % 100 == 0 ) { - warning() << "AutoAcquireFlushLockForMMAPV1Commit has not gotten lock in " - << attempt << " attempts"; - } - sleepmillis(10); - } + invariant(LOCK_OK == _locker->lock(resourceIdMMAPV1Flush, MODE_X, UINT_MAX)); } AutoAcquireFlushLockForMMAPV1Commit::~AutoAcquireFlushLockForMMAPV1Commit() { diff --git a/src/mongo/db/storage/mmap_v1/dur.cpp b/src/mongo/db/storage/mmap_v1/dur.cpp index 47357b21141..9a997e5a237 100644 --- a/src/mongo/db/storage/mmap_v1/dur.cpp +++ b/src/mongo/db/storage/mmap_v1/dur.cpp @@ -645,7 +645,7 @@ namespace mongo { if (commitJob._notify.nWaiting()) break; - if (commitJob.bytes() > UncommittedBytesLimit / 2) + if (commitJob.bytes() > UncommittedBytesLimit / 10) break; } diff --git a/src/mongo/db/storage/mmap_v1/dur.h b/src/mongo/db/storage/mmap_v1/dur.h index 0c6bf9a3013..786926db14c 100644 --- a/src/mongo/db/storage/mmap_v1/dur.h +++ b/src/mongo/db/storage/mmap_v1/dur.h @@ -43,7 +43,7 @@ namespace mongo { namespace dur { // a smaller limit is likely better on 32 bit - const unsigned UncommittedBytesLimit = (sizeof(void*)==4) ? 50 * 1024 * 1024 : 100 * 1024 * 1024; + const unsigned UncommittedBytesLimit = (sizeof(void*)==4) ? 50 * 1024 * 1024 : 512 * 1024 * 1024; /** Call during startup so durability module can initialize Throws if fatal error |