MB-20623: Remove 'fetches' vector from MutationLogHarvester::apply 43/68043/7
authorDave Rigby <daver@couchbase.com>
Tue, 23 Aug 2016 11:12:05 +0000 (12:12 +0100)
committerDave Rigby <daver@couchbase.com>
Fri, 30 Sep 2016 15:07:05 +0000 (15:07 +0000)
commitfa74b8dce7632236799192d1810c82b539e1949b
tree66b6ecb3432d4e53b80ed984e927f484872ceb70
parent050d6e32e712aceec4e15a476cda9106216023b9
MB-20623: Remove 'fetches' vector from MutationLogHarvester::apply

MutationLogHarvester::apply() builds a vector of keys (`fetches`) to
fetch from disk. This is essentially identical to the contents of
`committed`, except it only contains keys which currently exist in the
VBucket.

We can optimize this by removing fetches, and instead erasing the
elements from `committed[vb]` which are no longer valid. This also
means we no longer have to check for duplicates in batchWarmupCallback
(which was kinda pointless even before), as the data structure passed
in is now a set (and hence cannot by definition contain dupes).

Results in a reduction in the memory used by these temporary warmup
data structures - from 3876MB to 3218MB (17%) for the following
workload:

* 1 bucket, 10,000MB quota, 1 node.
* 30M items, 300bytes each. Dataset generated by:
    cbc-pillowfight -U couchbase://localhost:12000 -I 30000000 -m 300 -M 300 -t16

Change-Id: I1c2e480e53626be41fa20dcd44abe4d6fa327e4c
Reviewed-on: http://review.couchbase.org/68043
Reviewed-by: Daniel Owen <owend@couchbase.com>
Tested-by: buildbot <build@couchbase.com>
src/mutation_log.cc
src/mutation_log.h
src/warmup.cc