]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
os/bluestore: clear result in BlueRocksEnv::getChildren
authorliuchang0812 <liuchang0812@gmail.com>
Mon, 31 Jul 2017 03:06:58 +0000 (11:06 +0800)
committerliuchang0812 <liuchang0812@gmail.com>
Mon, 31 Jul 2017 05:20:45 +0000 (13:20 +0800)
see https://github.com/facebook/rocksdb/blob/master/env/env_posix.cc#L492. in
rocksdb::env_posix implementation, it will always clear result at first. We will
get a core dump when we use rocksdb::RepairDB if we do not clear result.

Fixes: http://tracker.ceph.com/issues/20857
Signed-off-by: liuchang0812 <liuchang0812@gmail.com>
src/os/bluestore/BlueRocksEnv.cc

index 1b1e2e903572f918ee0df75ba6ae5a3314e13181..34e8a2fea0b8eb30e67a92f907063e015d31c34a 100644 (file)
@@ -407,6 +407,7 @@ rocksdb::Status BlueRocksEnv::GetChildren(
   const std::string& dir,
   std::vector<std::string>* result)
 {
+  result->clear();
   int r = fs->readdir(dir, result);
   if (r < 0)
     return rocksdb::Status::IOError(dir, strerror(ENOENT));//    return err_to_status(r);