]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fix some list buckets handle leak 29886/head
authorTianshan Qu <tianshan@xsky.com>
Wed, 21 Aug 2019 04:33:37 +0000 (12:33 +0800)
committerTianshan Qu <tianshan@xsky.com>
Tue, 25 Feb 2020 09:38:40 +0000 (17:38 +0800)
Fixes: https://tracker.ceph.com/issues/44283
Signed-off-by: Tianshan Qu <tianshan@xsky.com>
src/rgw/rgw_bucket.cc

index 5f37624333330c367ebb10eb9de7407d30a78422..ac2e90a4fdb3a862e72afb3abed896bba03a9fc3 100644 (file)
@@ -1603,6 +1603,7 @@ int RGWBucketAdminOp::info(rgw::sal::RGWRadosStore *store, RGWBucketAdminOpState
           formatter->dump_string("bucket", bucket_name);
       }
     }
+    store->ctl()->meta.mgr->list_keys_complete(handle);
 
     formatter->close_section();
   }
@@ -1759,6 +1760,11 @@ static int process_stale_instances(rgw::sal::RGWRadosStore *store, RGWBucketAdmi
   bool truncated;
 
   formatter->open_array_section("keys");
+  auto g = make_scope_guard([&store, &handle, &formatter]() {
+                              store->ctl()->meta.mgr->list_keys_complete(handle);
+                              formatter->close_section(); // keys
+                              formatter->flush(cout);
+                            });
 
   do {
     list<std::string> keys;
@@ -1784,8 +1790,6 @@ static int process_stale_instances(rgw::sal::RGWRadosStore *store, RGWBucketAdmi
     }
   } while (truncated);
 
-  formatter->close_section(); // keys
-  formatter->flush(cout);
   return 0;
 }