summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/src/lsm/lsm_tree.c
diff options
context:
space:
mode:
authorLuke Chen <luke.chen@mongodb.com>2018-05-01 12:15:54 +1000
committerLuke Chen <luke.chen@mongodb.com>2018-05-01 12:15:54 +1000
commitb5b11cc858e1da6d8c451e0e9be17122cf5968de (patch)
treea1cc3479914f771ed2e5a89edf5cef37f7d0aad9 /src/third_party/wiredtiger/src/lsm/lsm_tree.c
parente88d29393fa22c857af21e107a3bc20402625b10 (diff)
downloadmongo-b5b11cc858e1da6d8c451e0e9be17122cf5968de.tar.gz
Import wiredtiger: aa6646fd0a1394793edfcf799f5f41f1d073bc5d from branch mongodb-3.8
ref: abf0651a81..aa6646fd0a for: 4.0.0-rc0 WT-4045 Don't retry fsync calls after EIO failure WT-4051 Test format configures too-small LSM caches. WT-4061 Don't rollback during recovery due to cache pressure
Diffstat (limited to 'src/third_party/wiredtiger/src/lsm/lsm_tree.c')
-rw-r--r--src/third_party/wiredtiger/src/lsm/lsm_tree.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/third_party/wiredtiger/src/lsm/lsm_tree.c b/src/third_party/wiredtiger/src/lsm/lsm_tree.c
index 9a7ab20f18f..16b28a1aecc 100644
--- a/src/third_party/wiredtiger/src/lsm/lsm_tree.c
+++ b/src/third_party/wiredtiger/src/lsm/lsm_tree.c
@@ -467,25 +467,23 @@ static int
__lsm_tree_open_check(WT_SESSION_IMPL *session, WT_LSM_TREE *lsm_tree)
{
WT_CONFIG_ITEM cval;
+ WT_CONNECTION_IMPL *conn;
uint64_t maxleafpage, required;
const char *cfg[] = { WT_CONFIG_BASE(
session, WT_SESSION_create), lsm_tree->file_config, NULL };
+ conn = S2C(session);
+
WT_RET(__wt_config_gets(session, cfg, "leaf_page_max", &cval));
maxleafpage = (uint64_t)cval.val;
- /*
- * Three chunks, plus one page for each participant in up to three
- * concurrent merges.
- */
- required = 3 * lsm_tree->chunk_size +
- 3 * (lsm_tree->merge_max * maxleafpage);
- if (S2C(session)->cache_size < required)
+ required = WT_LSM_TREE_MINIMUM_SIZE(
+ lsm_tree->chunk_size, lsm_tree->merge_max, maxleafpage);
+ if (conn->cache_size < required)
WT_RET_MSG(session, EINVAL,
"LSM cache size %" PRIu64 " (%" PRIu64 "MB) too small, "
"must be at least %" PRIu64 " (%" PRIu64 "MB)",
- S2C(session)->cache_size,
- S2C(session)->cache_size / WT_MEGABYTE,
+ conn->cache_size, conn->cache_size / WT_MEGABYTE,
required, (required + (WT_MEGABYTE - 1))/ WT_MEGABYTE);
return (0);
}