summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/src/lsm/lsm_tree.c
diff options
context:
space:
mode:
authorAlex Gorrod <alexander.gorrod@mongodb.com>2016-09-09 15:49:31 +1000
committerAlex Gorrod <alexander.gorrod@mongodb.com>2016-09-09 15:58:39 +1000
commit29b5a329c5c72fe87d1627bd99e682d9d5e2e34c (patch)
tree1dc8949286121eb16b472d4f5e4ea391baebc5de /src/third_party/wiredtiger/src/lsm/lsm_tree.c
parentbda317e9c852b27f0fe7d148e5c08499d2f8ec49 (diff)
downloadmongo-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.c22
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);