MB-23796: Wait for flusher to avoid stat race 48/76548/2
authorolivermd <oliver.downard@couchbase.com>
Mon, 10 Apr 2017 11:52:44 +0000 (12:52 +0100)
committerDave Rigby <daver@couchbase.com>
Mon, 10 Apr 2017 16:18:47 +0000 (16:18 +0000)
Under full eviction, the stat used for curr items is different to that
used under value eviction. Aditionally, under full eviction, the flusher
updates the relevant stat. This can lead to a race in the test between
the flusher and the test code. For example to test code to get the stats
may run before the flusher can, meaning that the previous operation is
not reflected in the stats, leading to the test failing a check.

Change-Id: I3ae6617fec0e0d076438bd839feaaea7633e23fd
Reviewed-on: http://review.couchbase.org/76548
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>
tests/ep_testsuite.cc

index fc70ed5..149cccc 100644 (file)
@@ -919,6 +919,11 @@ static enum test_result test_expiry(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1) {
             "Failed set.");
     h1->release(h, NULL, it);
 
+    // When run under full eviction, the total item stats are set from the
+    // flusher. So we need to wait for it to finish before checking the
+    // total number of items.
+    wait_for_flusher_to_settle(h, h1);
+
     std::stringstream ss;
     ss << "curr_items stat should be still 1 after ";
     ss << "overwriting the key that was expired, but not purged yet";