diff --git a/db/schema_tables.cc b/db/schema_tables.cc index f779b3062e..d3f3a8464c 100644 --- a/db/schema_tables.cc +++ b/db/schema_tables.cc @@ -368,18 +368,24 @@ future<> save_system_keyspace_schema() { return results; }); }; - auto reduce = [] (auto&& hash, auto&& results) { + auto reduce = [] (auto& hash, auto&& results) { for (auto&& rs : results) { for (auto&& f : rs.buf().fragments()) { - hash->Update(reinterpret_cast(f.begin()), f.size()); + hash.Update(reinterpret_cast(f.begin()), f.size()); } } - return std::move(hash); + return make_ready_future<>(); }; - return map_reduce(ALL.begin(), ALL.end(), map, std::move(std::make_unique()), reduce).then([] (auto&& hash) { - bytes digest{bytes::initialized_later(), CryptoPP::Weak::MD5::DIGESTSIZE}; - hash->Final(reinterpret_cast(digest.begin())); - return utils::UUID_gen::get_name_UUID(digest); + return do_with(CryptoPP::Weak::MD5{}, [map, reduce] (auto& hash) { + return do_for_each(ALL.begin(), ALL.end(), [&hash, map, reduce] (auto& table) { + return map(table).then([&hash, reduce] (auto&& results) { + return reduce(hash, results); + }); + }).then([&hash] { + bytes digest{bytes::initialized_later(), CryptoPP::Weak::MD5::DIGESTSIZE}; + hash.Final(reinterpret_cast(digest.begin())); + return make_ready_future(utils::UUID_gen::get_name_UUID(digest)); + }); }); }