From 2086c651ba6bcffa710c9d74a778ee54bebe16db Mon Sep 17 00:00:00 2001 From: Amnon Heiman Date: Mon, 7 Dec 2015 11:35:59 +0200 Subject: [PATCH] column_family: get_snapshot_details should return empty map for no snapshots If there is no snapshot directory for the specific column family, get_snapshot_details should return an empty map. This patch check that a directory exists before trying to iterate over it. Fixes #619 Signed-off-by: Amnon Heiman --- database.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/database.cc b/database.cc index 4db79daab7..64997539ef 100644 --- a/database.cc +++ b/database.cc @@ -2021,7 +2021,11 @@ future<> column_family::clear_snapshot(sstring tag) { future> column_family::get_snapshot_details() { std::unordered_map all_snapshots; return do_with(std::move(all_snapshots), [this] (auto& all_snapshots) { - return lister::scan_dir(_config.datadir + "/snapshots", { directory_entry_type::directory }, [this, &all_snapshots] (directory_entry de) { + return engine().file_exists(_config.datadir + "/snapshots").then([this, &all_snapshots](bool file_exists) { + if (!file_exists) { + return make_ready_future<>(); + } + return lister::scan_dir(_config.datadir + "/snapshots", { directory_entry_type::directory }, [this, &all_snapshots] (directory_entry de) { auto snapshot_name = de.name; auto snapshot = _config.datadir + "/snapshots/" + snapshot_name; all_snapshots.emplace(snapshot_name, snapshot_details()); @@ -2056,6 +2060,7 @@ future> column_fami }); }); }); + }); }).then([&all_snapshots] { return std::move(all_snapshots); });