MB-20528: unconditionally increment get meta ops 07/67307/12
authorSriram Ganesan <sriram@couchbase.com>
Thu, 1 Sep 2016 00:02:55 +0000 (17:02 -0700)
committerSriram Ganesan <sriram@couchbase.com>
Thu, 29 Sep 2016 02:01:04 +0000 (02:01 +0000)
The get meta operations prior to introducing bloom filters was
always incremented whether the key was present or not present
in the bucket. Restore the behavior where the get meta ops stat
is always incremented.

Change-Id: I09fadedb71929d0d078d0ca6c49ef27de3fd5bef
Reviewed-on: http://review.couchbase.org/67307
Reviewed-by: Dave Rigby <daver@couchbase.com>
Tested-by: buildbot <build@couchbase.com>
src/ep.cc
tests/ep_testsuite_xdcr.cc

index e65ecff..65dd055 100644 (file)
--- a/src/ep.cc
+++ b/src/ep.cc
@@ -2240,7 +2240,6 @@ ENGINE_ERROR_CODE EventuallyPersistentStore::getMetaData(
 
     if (v) {
         stats.numOpsGetMeta++;
-
         if (v->isTempInitialItem()) { // Need bg meta fetch.
             bgFetch(key, vbucket, cookie, true);
             return ENGINE_EWOULDBLOCK;
@@ -2277,6 +2276,7 @@ ENGINE_ERROR_CODE EventuallyPersistentStore::getMetaData(
         if (vb->maybeKeyExistsInFilter(key)) {
             return addTempItemForBgFetch(lh, bucket_num, key, vb, cookie, true);
         } else {
+            stats.numOpsGetMeta++;
             return ENGINE_KEY_ENOENT;
         }
     }
index 2b3fe50..471744a 100644 (file)
@@ -128,7 +128,7 @@ static enum test_result test_get_meta_deleted(ENGINE_HANDLE *h, ENGINE_HANDLE_V1
     wait_for_flusher_to_settle(h, h1);
 
     // check the stat
-    size_t temp = get_int_stat(h, h1, "ep_num_ops_get_meta");
+    int temp = get_int_stat(h, h1, "ep_num_ops_get_meta");
     check(temp == 0, "Expect zero getMeta ops");
 
     check(get_meta(h, h1, key), "Expected to get meta");
@@ -140,7 +140,7 @@ static enum test_result test_get_meta_deleted(ENGINE_HANDLE *h, ENGINE_HANDLE_V1
 
     // check the stat again
     temp = get_int_stat(h, h1, "ep_num_ops_get_meta");
-    check(temp == 1, "Expect one getMeta op");
+    checkeq(1, temp, "Expect one getMeta op");
 
     h1->release(h, NULL, i);
     return SUCCESS;
@@ -160,7 +160,7 @@ static enum test_result test_get_meta_nonexistent(ENGINE_HANDLE *h, ENGINE_HANDL
             "Expected enoent");
     // check the stat again
     temp = get_int_stat(h, h1, "ep_num_ops_get_meta");
-    checkeq(0, temp, "Expect zero getMeta ops, thanks to bloom filters");
+    checkeq(1, temp, "Expect one getMeta ops");
 
     return SUCCESS;
 }
@@ -201,7 +201,7 @@ static enum test_result test_get_meta_with_get(ENGINE_HANDLE *h, ENGINE_HANDLE_V
             h1->get(h, NULL, &i, key1, strlen(key1), 0), "Expected enoent");
     // check the stat again
     temp = get_int_stat(h, h1, "ep_num_ops_get_meta");
-    check(temp == 2, "Expect more getMeta ops");
+    checkeq(2, temp, "Expect more getMeta ops");
 
     // test get_meta followed by get for a nonexistent key. should fail.
     check(!get_meta(h, h1, key2), "Expected get meta to return false");
@@ -211,7 +211,7 @@ static enum test_result test_get_meta_with_get(ENGINE_HANDLE *h, ENGINE_HANDLE_V
             h1->get(h, NULL, &i, key2, strlen(key2), 0), "Expected enoent");
     // check the stat again
     temp = get_int_stat(h, h1, "ep_num_ops_get_meta");
-    checkeq(2, temp, "No extra getMeta ops, thanks to bloom filters");
+    checkeq(3, temp, "Expected one extra getMeta ops");
 
     return SUCCESS;
 }
@@ -280,8 +280,8 @@ static enum test_result test_get_meta_with_set(ENGINE_HANDLE *h, ENGINE_HANDLE_V
             store(h, h1, NULL, OPERATION_SET, key2, "someothervalue", &i),
             "Failed set.");
     // check the stat again
-    checkeq(2, get_int_stat(h, h1, "ep_num_ops_get_meta"),
-            "Unexpected getMeta ops, considering bloom filter assist");
+    checkeq(3, get_int_stat(h, h1, "ep_num_ops_get_meta"),
+            "Expected one extra getMeta ops");
 
     h1->release(h, NULL, i);
     return SUCCESS;
@@ -318,7 +318,7 @@ static enum test_result test_get_meta_with_delete(ENGINE_HANDLE *h, ENGINE_HANDL
     checkeq(ENGINE_KEY_ENOENT, del(h, h1, key1, 0, 0), "Expected enoent");
     // check the stat
     temp = get_int_stat(h, h1, "ep_num_ops_get_meta");
-    check(temp == 2, "Expect more getMeta op");
+    checkeq(2, temp, "Expect more getMeta op");
 
     // test get_meta followed by delete for a nonexistent key. should fail.
     check(!get_meta(h, h1, key2), "Expected get meta to return false");
@@ -326,7 +326,7 @@ static enum test_result test_get_meta_with_delete(ENGINE_HANDLE *h, ENGINE_HANDL
     checkeq(ENGINE_KEY_ENOENT, del(h, h1, key2, 0, 0), "Expected enoent");
     // check the stat again
     temp = get_int_stat(h, h1, "ep_num_ops_get_meta");
-    checkeq(2, temp, "Bloom filter did not assist!");
+    checkeq(3, temp, "Expected one extra getMeta ops");
 
     return SUCCESS;
 }