]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
luminous: test/store_test: workaround for failing BlobReuseOnOverwrite UT
authorIgor Fedotov <ifedotov@suse.com>
Tue, 19 Mar 2019 18:23:31 +0000 (21:23 +0300)
committerIgor Fedotov <ifedotov@suse.com>
Wed, 20 Mar 2019 10:21:55 +0000 (13:21 +0300)
Workarounds: https://tracker.ceph.com/issues/38795

Signed-off-by: Igor Fedotov <ifedotov@suse.com>
(cherry picked from commit 08b6038f99e3de783518ceea08ac5d2ddc7e1697)

src/test/objectstore/store_test.cc

index 326c9785d0354a79423e36fa3a0071e8db14b048..9f8e66ed2c60f9ed065fcbbc8c5526690696f751 100644 (file)
@@ -5949,10 +5949,20 @@ TEST_P(StoreTestSpecificAUSize, BlobReuseOnOverwrite) {
     return;
 
   size_t block_size = 4096;
-  StartDeferred(block_size);
+
   g_conf->set_val("bluestore_max_blob_size", "65536");
+  // need to tune cache autotune interval as lack of cache balancing
+  // triggers excessive cache trimming after fsck
+  // See https://tracker.ceph.com/issues/38795
+  g_conf->set_val("bluestore_cache_autotune_interval", "1");
   g_conf->apply_changes(NULL);
 
+  StartDeferred(block_size);
+
+  // wait 2xbluestore_cache_autotune_interval to make sure cache has been
+  // rebalanced
+  sleep(2);
+
   ObjectStore::Sequencer osr("test");
   int r;
   coll_t cid;
@@ -6115,6 +6125,7 @@ TEST_P(StoreTestSpecificAUSize, BlobReuseOnOverwrite) {
     ASSERT_EQ(r, 0);
   }
   g_conf->set_val("bluestore_max_blob_size", "0");
+  g_conf->set_val("bluestore_cache_autotune_interval", "5");
 
 }
 
@@ -6124,11 +6135,19 @@ TEST_P(StoreTestSpecificAUSize, BlobReuseOnOverwriteReverse) {
     return;
 
   size_t block_size = 4096;
-  StartDeferred(block_size);
   g_conf->set_val("bluestore_max_blob_size", "65536");
-
+  // need to tune cache autotune interval as lack of cache balancing
+  // triggers excessive cache trimming after fsck
+  // See https://tracker.ceph.com/issues/38795
+  g_conf->set_val("bluestore_cache_autotune_interval", "1");
   g_conf->apply_changes(NULL);
 
+  StartDeferred(block_size);
+
+  // wait 2xbluestore_cache_autotune_interval to make sure cache has been
+  // rebalanced
+  sleep(2);
+
   ObjectStore::Sequencer osr("test");
   int r;
   coll_t cid;
@@ -6298,6 +6317,7 @@ TEST_P(StoreTestSpecificAUSize, BlobReuseOnOverwriteReverse) {
     ASSERT_EQ(r, 0);
   }
   g_conf->set_val("bluestore_max_blob_size", "0");
+  g_conf->set_val("bluestore_cache_autotune_interval", "5");
 }
 
 TEST_P(StoreTestSpecificAUSize, BlobReuseOnSmallOverwrite) {
@@ -6306,10 +6326,19 @@ TEST_P(StoreTestSpecificAUSize, BlobReuseOnSmallOverwrite) {
     return;
 
   size_t block_size = 4096;
-  StartDeferred(block_size);
   g_conf->set_val("bluestore_max_blob_size", "65536");
+  // need to tune cache autotune interval as lack of cache balancing
+  // triggers excessive cache trimming after fsck
+  // See https://tracker.ceph.com/issues/38795
+  g_conf->set_val("bluestore_cache_autotune_interval", "1");
   g_conf->apply_changes(NULL);
 
+  StartDeferred(block_size);
+
+  // wait 2xbluestore_cache_autotune_interval to make sure cache has been
+  // rebalanced
+  sleep(2);
+
   ObjectStore::Sequencer osr("test");
   int r;
   coll_t cid;
@@ -6372,6 +6401,7 @@ TEST_P(StoreTestSpecificAUSize, BlobReuseOnSmallOverwrite) {
     ASSERT_EQ(r, 0);
   }
   g_conf->set_val("bluestore_max_blob_size", "0");
+  g_conf->set_val("bluestore_cache_autotune_interval", "5");
 }
 
 // The test case to reproduce an issue when write happens