From 9c9eebe9ff9649ea8a1813c8d464e00a84ee4715 Mon Sep 17 00:00:00 2001 From: Daniel Smith Date: Fri, 5 Jun 2020 18:30:19 +0000 Subject: [PATCH] Improve cleanup --- fdbserver/KeyValueStoreRocksDB.actor.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/fdbserver/KeyValueStoreRocksDB.actor.cpp b/fdbserver/KeyValueStoreRocksDB.actor.cpp index 63dea9ac36..0b0fa4d3bc 100644 --- a/fdbserver/KeyValueStoreRocksDB.actor.cpp +++ b/fdbserver/KeyValueStoreRocksDB.actor.cpp @@ -150,7 +150,8 @@ struct RocksDBKeyValueStore : IKeyValueStore { double getTimeEstimate() override { return SERVER_KNOBS->COMMIT_TIME_ESTIMATE; } }; void action(CloseAction& a) { - db->Close(); + auto s = db->Close(); + TraceEvent(SevError, "RocksDBError").detail("Error", s.ToString()).detail("Method", "Close"); a.done.send(Void()); } }; @@ -304,16 +305,17 @@ struct RocksDBKeyValueStore : IKeyValueStore { } ACTOR static void doClose(RocksDBKeyValueStore* self, bool deleteOnClose) { - state Promise closePromise = self->closePromise; wait(self->readThreads->stop()); auto a = new Writer::CloseAction{}; auto f = a->done.getFuture(); self->writeThread->post(a); wait(f); wait(self->writeThread->stop()); - delete self; // TODO: delete data on close - closePromise.send(Void()); + if (self->closePromise.canBeSet()) self->closePromise.send(Void()); + if (self->errorPromise.canBeSet()) self->errorPromise.send(Never()); + delete self->db; + delete self; } Future onClosed() override {