MB-24151: Implement memory managed backfills using Range Iterators 55/78055/9
authorManu Dhundi <manu@couchbase.com>
Wed, 17 May 2017 23:21:28 +0000 (16:21 -0700)
committerDave Rigby <daver@couchbase.com>
Thu, 18 May 2017 15:48:44 +0000 (15:48 +0000)
commit61b5ad4f25a87492661c02ad40922d290faa6a4f
tree5573d3a07d8f75f671e5f5b2e13799bcee0f57f4
parentba66d65aa70069a92311b62ace4231c969a0ae4b
MB-24151: Implement memory managed backfills using Range Iterators

This commit implements memory management in the backfills of
Ephemeral buckets. It borrows the idea from disk backfills where
the backfill is suspended upon high memory usage, that is items
are not put onto the readyQ of the stream.

At the core is a Backfill state machine which is driven by
the BackfillManagerTask. It keeps track of any suspended backill
and also resumes from the suspended point. It also creates a range
iterators on the in-memory sequence list and using this iterator
it reads (backfills) items one by one.

This commit also adds certain features to the sequence list iterators
to get snapshot numbers, estimate num items in backfill etc.

Change-Id: Id92b0693763e550f842fb7fb5911cfefd8935e79
Reviewed-on: http://review.couchbase.org/78055
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>
16 files changed:
configuration.json
src/dcp/backfill.h
src/dcp/backfill_disk.cc
src/dcp/backfill_disk.h
src/dcp/backfill_memory.cc
src/dcp/backfill_memory.h
src/ephemeral_vb.cc
src/ephemeral_vb.h
src/linked_list.cc
src/linked_list.h
src/seqlist.cc
src/seqlist.h
tests/ep_testsuite.cc
tests/ep_testsuite_dcp.cc
tests/mock/mock_stream.h
tests/module_tests/dcp_test.cc