MB-23734: Do memory mgmt across backfills in Ephemeral backfills 02/77402/5
authorManu Dhundi <manu@couchbase.com>
Wed, 26 Apr 2017 23:19:36 +0000 (16:19 -0700)
committerManu Dhundi <manu@couchbase.com>
Thu, 27 Apr 2017 17:59:35 +0000 (17:59 +0000)
commit08cd813984b4cf2ae85143f2046d4869f66057b3
treea5fad275b54aaf409ed220ef020107af401f508b
parent890dfcd957a797110da36b031d69ee3ab6f4e279
MB-23734: Do memory mgmt across backfills in Ephemeral backfills

In Ephemeral buckets we currently do not have backfill memory mgmt.
Mainly because upon increased memory usage by backfill items we cannot
easily pause the backfill midway because pausing a backfill will
increase the duplicate items in the ephemeral sequential data structure.

This commit adds memory mgmt across backfills (each vbucket is an
individual backfill). Upon full usage of the backfill buffer we stop
running other backfills until the backfill buffer is empty again.

However once a backfill starts it runs till completion even if its
memory usage goes beyond the buffer size.

Benefit: We will not run new backfills once backfill buffer is full.

Known limitation: We don't stop the currently running backfill even
                  if the backfill buffer is full.

We plan to address this limitation soon.

Change-Id: If5f77561a856b5001de159cd4655eb30c71e222c
Reviewed-on: http://review.couchbase.org/77402
Reviewed-by: Dave Rigby <daver@couchbase.com>
Tested-by: Build Bot <build@couchbase.com>
src/dcp/backfill-manager.cc
src/dcp/backfill-manager.h
src/dcp/backfill_disk.cc
src/dcp/backfill_memory.cc
src/dcp/producer.cc
src/dcp/producer.h
src/dcp/stream.cc
src/dcp/stream.h
src/ephemeral_bucket.cc
tests/ep_testsuite_dcp.cc