diff --git a/src/server/pegasus_server_impl.cpp b/src/server/pegasus_server_impl.cpp index 27d852444065d58aec1b19912db9832be69ff740..ff221e20e69f8b8d622311e98eeeeddcfdd6b0d2 100644 --- a/src/server/pegasus_server_impl.cpp +++ b/src/server/pegasus_server_impl.cpp @@ -414,7 +414,14 @@ void pegasus_server_impl::parse_checkpoints() } } -pegasus_server_impl::~pegasus_server_impl() = default; +pegasus_server_impl::~pegasus_server_impl() +{ + if (_is_open) { + dassert(_db != nullptr, ""); + delete _db; + _db = nullptr; + } +} void pegasus_server_impl::gc_checkpoints(bool force_reserve_one) { @@ -1664,8 +1671,10 @@ void pegasus_server_impl::on_clear_scanner(const int64_t &args) { _context_cache void pegasus_server_impl::cancel_background_work(bool wait) { - dassert(_db != nullptr, ""); - rocksdb::CancelAllBackgroundWork(_db, wait); + if (_is_open) { + dassert(_db != nullptr, ""); + rocksdb::CancelAllBackgroundWork(_db, wait); + } } ::dsn::error_code pegasus_server_impl::stop(bool clear_state)