]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/os/seastore: only create handle in create_new_collection
authorSamuel Just <sjust@redhat.com>
Wed, 28 Apr 2021 07:25:02 +0000 (00:25 -0700)
committerSamuel Just <sjust@redhat.com>
Fri, 7 May 2021 07:36:44 +0000 (00:36 -0700)
FuturizedStore::create_new_collection isn't supposed to actually
create the collection.  See OSD::mkfs for a usage example.

Signed-off-by: Samuel Just <sjust@redhat.com>
src/crimson/os/seastore/seastore.cc
src/test/crimson/seastore/test_seastore.cc

index 8455a94e033e41ef869216635c982cfc64898644..4fb577113a7a73c6f7ee2400f5bc71603f7642e0 100644 (file)
@@ -107,21 +107,7 @@ seastar::future<CollectionRef> SeaStore::create_new_collection(const coll_t& cid
 {
   LOG_PREFIX(SeaStore::create_new_collection);
   DEBUG("{}", cid);
-  auto c = _get_collection(cid);
-  return repeat_with_internal_context(
-    c,
-    ceph::os::Transaction{},
-    [this, cid](auto &ctx) {
-      return _create_collection(
-       ctx,
-       cid,
-       4 /* TODO */
-      ).safe_then([this, &ctx] {
-       return transaction_manager->submit_transaction(std::move(ctx.transaction));
-      });
-    }).then([c] {
-      return CollectionRef(c);
-    });
+  return seastar::make_ready_future<CollectionRef>(_get_collection(cid));
 }
 
 seastar::future<CollectionRef> SeaStore::open_collection(const coll_t& cid)
index bbea9222864a43aa15e81e2041dfc0c0662309ba..1100306209e0d822b07158204b1dc1ffa21d7081 100644 (file)
@@ -40,6 +40,11 @@ struct seastore_test_t :
       return seastore->create_new_collection(coll_name);
     }).then([this](auto coll_ref) {
       coll = coll_ref;
+      CTransaction t;
+      t.create_collection(coll_name, 4);
+      return seastore->do_transaction(
+       coll,
+       std::move(t));
     });
   }
 
@@ -288,6 +293,11 @@ TEST_F(seastore_test_t, collection_create_list_remove)
     coll_t test_coll{spg_t{pg_t{1, 0}}};
     {
       seastore->create_new_collection(test_coll).get0();
+      {
+       CTransaction t;
+       t.create_collection(test_coll, 4);
+       do_transaction(std::move(t));
+      }
       auto collections = seastore->list_collections().get0();
       EXPECT_EQ(collections.size(), 2);
       EXPECT_TRUE(contains(collections, coll_name));
@@ -295,9 +305,11 @@ TEST_F(seastore_test_t, collection_create_list_remove)
     }
 
     {
-      CTransaction t;
-      t.remove_collection(test_coll);
-      do_transaction(std::move(t));
+      {
+       CTransaction t;
+       t.remove_collection(test_coll);
+       do_transaction(std::move(t));
+      }
       auto collections = seastore->list_collections().get0();
       EXPECT_EQ(collections.size(), 1);
       EXPECT_TRUE(contains(collections, coll_name));