]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fix some list buckets handle leak 34986/head
authorTianshan Qu <tianshan@xsky.com>
Wed, 21 Aug 2019 04:33:37 +0000 (12:33 +0800)
committerNathan Cutler <ncutler@suse.com>
Mon, 11 May 2020 17:51:00 +0000 (19:51 +0200)
Fixes: https://tracker.ceph.com/issues/44283
Signed-off-by: Tianshan Qu <tianshan@xsky.com>
(cherry picked from commit 8955ca2c0c804f6c43bb33c97bbe263bac1cc36d)

Conflicts:
    src/rgw/rgw_bucket.cc
- changed two instances of "store->ctl()->meta.mgr->" to "store->meta_mgr->"
  to align with nautilus usage

src/rgw/rgw_bucket.cc

index 80ba1ba354bda799819710fe3152116a9cc86387..0ebc650101d1bb226d7f347ddfabe1a4d1494b3c 100644 (file)
@@ -1658,6 +1658,7 @@ int RGWBucketAdminOp::info(RGWRados *store, RGWBucketAdminOpState& op_state,
           formatter->dump_string("bucket", bucket_name);
       }
     }
+    store->meta_mgr->list_keys_complete(handle);
 
     formatter->close_section();
   }
@@ -1814,6 +1815,11 @@ static int process_stale_instances(RGWRados *store, RGWBucketAdminOpState& op_st
   bool truncated;
 
   formatter->open_array_section("keys");
+  auto g = make_scope_guard([&store, &handle, &formatter]() {
+                              store->meta_mgr->list_keys_complete(handle);
+                              formatter->close_section(); // keys
+                              formatter->flush(cout);
+                            });
 
   do {
     list<std::string> keys;
@@ -1839,8 +1845,6 @@ static int process_stale_instances(RGWRados *store, RGWBucketAdminOpState& op_st
     }
   } while (truncated);
 
-  formatter->close_section(); // keys
-  formatter->flush(cout);
   return 0;
 }