diff options
author | Alex Gorrod <alexander.gorrod@mongodb.com> | 2016-09-09 15:49:31 +1000 |
---|---|---|
committer | Alex Gorrod <alexander.gorrod@mongodb.com> | 2016-09-09 15:58:39 +1000 |
commit | 29b5a329c5c72fe87d1627bd99e682d9d5e2e34c (patch) | |
tree | 1dc8949286121eb16b472d4f5e4ea391baebc5de /src/third_party/wiredtiger/src/lsm/lsm_tree.c | |
parent | bda317e9c852b27f0fe7d148e5c08499d2f8ec49 (diff) | |
download | mongo-29b5a329c5c72fe87d1627bd99e682d9d5e2e34c.tar.gz |
Import wiredtiger: 569c70d13a7b3da0fe8eb1bac06a86865cb36a7c from branch mongodb-3.4
ref: 7d3c0f9f50..569c70d13a
for: 3.3.13
SERVER-25843 Coverity analysis defect 99856: Redundant test
SERVER-25845 Coverity analysis defect 99859: Explicit null dereferenced
SERVER-25846 Coverity analysis defect 99861: Dereference after null check
WT-2221 Document which statistics are available via a "fast" configuration vs. an "all" configuration
WT-2233 Investigate changing when the eviction server switches to aggressive mode.
WT-2323 Allocate a transaction id at the beginning of join cursor iteration
WT-2555 make format run on Windows
WT-2788 Java: freed memory overwrite during handle close can cause JNI crash
WT-2816 Improve WiredTiger eviction performance
WT-2824 wtperf displays connection and table create configurations twice
WT-2842 split wtperf's configuration into per-database and per-run parts
WT-2866 Eviction server algorithm tuning
WT-2867 Review and fix barrier usage in __lsm_tree_close
WT-2870 Rename wtperf checkpoint schema jobs
WT-2871 __wt_verbose has the wrong GCC format attributes
WT-2872 Recent stuck cache test/stress failures.
WT-2873 Refactor CRC32 code
WT-2875 Test test_wt2853_perf can run too long under valgrind
WT-2876 Extend wtperf to support a log like table
WT-2878 Verbose changes affected performance
WT-2881 Add -Wpedantic to clang compiler warning flags
WT-2882 Add CRC32 hardware scons detection, disable CRC hardware support on ARM for now
WT-2883 wiredtiger_open with verbose=handleops recursive loop
WT-2885 __wt_checkpoint_signal lint
WT-2886 Decide how in-memory configuration and eviction_dirty_target interact
WT-2888 Switch functions to return void where possible
WT-2892 hot backup can race with block truncate
WT-2896 Coverity #1362535: resource leak
WT-2897 Checkpoints can become corrupted on failure
WT-2901 Add option to disable checkpoint dirty stepdown phase
Diffstat (limited to 'src/third_party/wiredtiger/src/lsm/lsm_tree.c')
-rw-r--r-- | src/third_party/wiredtiger/src/lsm/lsm_tree.c | 22 |
1 files changed, 7 insertions, 15 deletions
diff --git a/src/third_party/wiredtiger/src/lsm/lsm_tree.c b/src/third_party/wiredtiger/src/lsm/lsm_tree.c index c84f5c519cf..db9fd581110 100644 --- a/src/third_party/wiredtiger/src/lsm/lsm_tree.c +++ b/src/third_party/wiredtiger/src/lsm/lsm_tree.c @@ -85,10 +85,9 @@ __lsm_tree_discard(WT_SESSION_IMPL *session, WT_LSM_TREE *lsm_tree, bool final) * __lsm_tree_close -- * Close an LSM tree structure. */ -static int +static void __lsm_tree_close(WT_SESSION_IMPL *session, WT_LSM_TREE *lsm_tree, bool final) { - WT_DECL_RET; int i; /* @@ -97,7 +96,7 @@ __lsm_tree_close(WT_SESSION_IMPL *session, WT_LSM_TREE *lsm_tree, bool final) * the tree queue state. */ lsm_tree->active = false; - WT_READ_BARRIER(); + WT_FULL_BARRIER(); /* * Wait for all LSM operations to drain. If WiredTiger is shutting @@ -120,17 +119,11 @@ __lsm_tree_close(WT_SESSION_IMPL *session, WT_LSM_TREE *lsm_tree, bool final) * other schema level operations will return EBUSY, even though * we're dropping the schema lock here. */ - if (i % WT_THOUSAND == 0) { - WT_WITHOUT_LOCKS(session, ret = + if (i % WT_THOUSAND == 0) + WT_WITHOUT_LOCKS(session, __wt_lsm_manager_clear_tree(session, lsm_tree)); - WT_ERR(ret); - } __wt_yield(); } - return (0); - -err: lsm_tree->active = true; - return (ret); } /* @@ -154,7 +147,7 @@ __wt_lsm_tree_close_all(WT_SESSION_IMPL *session) * is unconditional. */ (void)__wt_atomic_add32(&lsm_tree->refcnt, 1); - WT_TRET(__lsm_tree_close(session, lsm_tree, true)); + __lsm_tree_close(session, lsm_tree, true); WT_TRET(__lsm_tree_discard(session, lsm_tree, true)); } @@ -390,9 +383,8 @@ __lsm_tree_find(WT_SESSION_IMPL *session, * spurious busy returns. */ (void)__wt_atomic_add32(&lsm_tree->refcnt, 1); - if (__lsm_tree_close( - session, lsm_tree, false) != 0 || - lsm_tree->refcnt != 1) { + __lsm_tree_close(session, lsm_tree, false); + if (lsm_tree->refcnt != 1) { __wt_lsm_tree_release( session, lsm_tree); return (EBUSY); |