From efa07125a49a979a33d6cd9647ce2dddefb4935d Mon Sep 17 00:00:00 2001 From: lijianyu Date: Thu, 21 May 2020 10:48:56 +0800 Subject: [PATCH] fix the coredump issue when creating multiple raft groups concurrently in meta merge mode --- src/braft/raft_meta.cpp | 2 +- src/braft/raft_meta.h | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/braft/raft_meta.cpp b/src/braft/raft_meta.cpp index 57590188..2ce73a51 100644 --- a/src/braft/raft_meta.cpp +++ b/src/braft/raft_meta.cpp @@ -106,7 +106,7 @@ class MetaStorageManager { typedef butil::DoublyBufferedData DoublyBufferedMetaStorageMap; static size_t _add(MetaStorageMap& m, const std::string& path, - const scoped_refptr mss) { + const scoped_refptr& mss) { std::pair iter = m.insert(std::make_pair(path, mss)); if (iter.second) { diff --git a/src/braft/raft_meta.h b/src/braft/raft_meta.h index 8b849904..2d4200a0 100644 --- a/src/braft/raft_meta.h +++ b/src/braft/raft_meta.h @@ -143,11 +143,12 @@ friend class scoped_refptr; public: explicit KVBasedMergedMetaStorageImpl(const std::string& path) - : _is_inited(false), _path(path) {} + : _is_inited(false), _path(path), _db(nullptr) {} KVBasedMergedMetaStorageImpl() {} virtual ~KVBasedMergedMetaStorageImpl() { if (_db) { delete _db; + _db = nullptr; } }