// clones in the cache tier)
// This test requires cache tier and base tier to have the same pg_num/pgp_num
{
- IoCtx cache_ioctx;
- ASSERT_EQ(0, cluster.ioctx_create(cache_pool_name.c_str(), cache_ioctx));
- ostringstream ss;
- ss << "{\"prefix\": \"pg scrub\", \"pgid\": \""
- << cache_ioctx.get_id() << "."
- << ioctx.get_object_pg_hash_position("foo")
- << "\"}";
- ASSERT_EQ(0, cluster.mon_command(ss.str(), inbl, NULL, NULL));
-
+ for (int tries = 0; tries < 5; ++tries) {
+ IoCtx cache_ioctx;
+ ASSERT_EQ(0, cluster.ioctx_create(cache_pool_name.c_str(), cache_ioctx));
+ ostringstream ss;
+ ss << "{\"prefix\": \"pg scrub\", \"pgid\": \""
+ << cache_ioctx.get_id() << "."
+ << ioctx.get_object_pg_hash_position("foo")
+ << "\"}";
+ int r = cluster.mon_command(ss.str(), inbl, NULL, NULL);
+ if (r == -EAGAIN)
+ continue;
+ ASSERT_EQ(0, r);
+ break;
+ }
// give it a few seconds to go. this is sloppy but is usually enough time
cout << "waiting for scrub..." << std::endl;
sleep(15);