summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Cahill <michael.cahill@wiredtiger.com>2014-02-28 23:10:35 +1100
committerMichael Cahill <michael.cahill@wiredtiger.com>2014-02-28 23:10:35 +1100
commit180f1a59ec0e025c13202185ece0847133a78687 (patch)
treeead1fbc206ee5b9abc3248705bd388830e1db31f
parent3681e9cbdbed3eee7d80d89fa50bcb2c145aa1c7 (diff)
downloadmongo-180f1a59ec0e025c13202185ece0847133a78687.tar.gz
Loosen the assertions around LSM merges and Bloom filters: it's okay to merge chunks in generations greater than zero even if they don't have Bloom filters.
-rw-r--r--src/lsm/lsm_merge.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/lsm/lsm_merge.c b/src/lsm/lsm_merge.c
index 74e5e58df97..0bf1bb49b2f 100644
--- a/src/lsm/lsm_merge.c
+++ b/src/lsm/lsm_merge.c
@@ -101,15 +101,15 @@ __wt_lsm_merge(
WT_RET(__wt_lsm_tree_lock(session, lsm_tree, 1));
/*
- * Only include chunks that already have a Bloom filter and not
- * involved in a merge.
+ * Only include chunks that already have a Bloom filter or are the
+ * result of a merge and not involved in a merge.
*/
for (end_chunk = lsm_tree->nchunks - 1; end_chunk > 0; --end_chunk) {
chunk = lsm_tree->chunk[end_chunk];
WT_ASSERT(session, chunk != NULL);
if (F_ISSET(chunk, WT_LSM_CHUNK_MERGING))
continue;
- if (F_ISSET(chunk, WT_LSM_CHUNK_BLOOM))
+ if (F_ISSET(chunk, WT_LSM_CHUNK_BLOOM) || chunk->generation > 0)
break;
else if (FLD_ISSET(lsm_tree->bloom, WT_LSM_BLOOM_OFF) &&
F_ISSET(chunk, WT_LSM_CHUNK_ONDISK))
@@ -154,7 +154,7 @@ __wt_lsm_merge(
WT_ASSERT(session, F_ISSET(chunk, WT_LSM_CHUNK_BLOOM) ||
FLD_ISSET(lsm_tree->bloom, WT_LSM_BLOOM_OFF) ||
- start_chunk == 1);
+ chunk->generation > 0);
/*
* Look for small merges before trying a big one: some threads