diff options
author | Kaloian Manassiev <kaloian.manassiev@mongodb.com> | 2014-10-27 16:35:27 -0400 |
---|---|---|
committer | Kaloian Manassiev <kaloian.manassiev@mongodb.com> | 2014-10-29 16:35:12 -0400 |
commit | e192dc12571f5388a5005c3e71f6c1f497efa6ad (patch) | |
tree | e27b7167743985b7a662b27c6cf085047f95a6a6 /src/mongo/db/concurrency/d_concurrency_test.cpp | |
parent | ed0947b4ca2c71f4c16fa38cc18a858249910b87 (diff) | |
download | mongo-e192dc12571f5388a5005c3e71f6c1f497efa6ad.tar.gz |
SERVER-15262/SERVER-15711 Flush thread should have precedence and discover deadlocks
Diffstat (limited to 'src/mongo/db/concurrency/d_concurrency_test.cpp')
-rw-r--r-- | src/mongo/db/concurrency/d_concurrency_test.cpp | 43 |
1 files changed, 31 insertions, 12 deletions
diff --git a/src/mongo/db/concurrency/d_concurrency_test.cpp b/src/mongo/db/concurrency/d_concurrency_test.cpp index 37d54f73fe9..a2f16d6f760 100644 --- a/src/mongo/db/concurrency/d_concurrency_test.cpp +++ b/src/mongo/db/concurrency/d_concurrency_test.cpp @@ -90,27 +90,46 @@ namespace mongo { } } - TEST(DConcurrency, readlocktryTimeoutDueToFlushLock) { + TEST(DConcurrency, readlocktryNoTimeoutDueToFlushLockS) { MMAPV1LockerImpl ls(1); AutoAcquireFlushLockForMMAPV1Commit autoFlushLock(&ls); - { - MMAPV1LockerImpl lsTry(2); - readlocktry lockTry(&lsTry, 1); + MMAPV1LockerImpl lsTry(2); + readlocktry lockTry(&lsTry, 1); - ASSERT(!lockTry.got()); - } + ASSERT(lockTry.got()); } - TEST(DConcurrency, writelocktryTimeoutDueToFlushLock) { + TEST(DConcurrency, writelocktryTimeoutDueToFlushLockS) { MMAPV1LockerImpl ls(1); AutoAcquireFlushLockForMMAPV1Commit autoFlushLock(&ls); - { - MMAPV1LockerImpl lsTry(2); - writelocktry lockTry(&lsTry, 1); - ASSERT(!lockTry.got()); - } + MMAPV1LockerImpl lsTry(2); + writelocktry lockTry(&lsTry, 1); + + ASSERT(!lockTry.got()); + } + + TEST(DConcurrency, readlocktryTimeoutDueToFlushLockX) { + MMAPV1LockerImpl ls(1); + AutoAcquireFlushLockForMMAPV1Commit autoFlushLock(&ls); + autoFlushLock.upgradeFlushLockToExclusive(); + + MMAPV1LockerImpl lsTry(2); + readlocktry lockTry(&lsTry, 1); + + ASSERT(!lockTry.got()); + } + + TEST(DConcurrency, writelocktryTimeoutDueToFlushLockX) { + MMAPV1LockerImpl ls(1); + AutoAcquireFlushLockForMMAPV1Commit autoFlushLock(&ls); + autoFlushLock.upgradeFlushLockToExclusive(); + + MMAPV1LockerImpl lsTry(2); + writelocktry lockTry(&lsTry, 1); + + ASSERT(!lockTry.got()); } TEST(DConcurrency, TempReleaseGlobalWrite) { |