/* * Copyright (C) 2018 ScyllaDB */ /* * This file is part of Scylla. * * Scylla is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Scylla is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Scylla. If not, see . */ #pragma once #include #include #include #include #include #include #include "seastarx.hh" class database; class table; using column_family = table; namespace db { class system_distributed_keyspace; namespace view { class view_update_generator; } } namespace sstables { class entry_descriptor; class foreign_sstable_open_info; } namespace service { class storage_proxy; } class distributed_loader { public: static void reshard(distributed& db, sstring ks_name, sstring cf_name); static future<> open_sstable(distributed& db, sstables::entry_descriptor comps, std::function (column_family&, sstables::foreign_sstable_open_info)> func, const io_priority_class& pc = default_priority_class()); static future<> load_new_sstables(distributed& db, distributed& view_update_generator, sstring ks, sstring cf, std::vector new_tables); static future> flush_upload_dir(distributed& db, distributed& sys_dist_ks, sstring ks_name, sstring cf_name); static future probe_file(distributed& db, sstring sstdir, sstring fname); static future<> populate_column_family(distributed& db, sstring sstdir, sstring ks, sstring cf); static future<> populate_keyspace(distributed& db, sstring datadir, sstring ks_name); static future<> init_system_keyspace(distributed& db); static future<> ensure_system_table_directories(distributed& db); static future<> init_non_system_keyspaces(distributed& db, distributed& proxy); private: static future<> cleanup_column_family_temp_sst_dirs(sstring sstdir); static future<> handle_sstables_pending_delete(sstring pending_deletes_dir); static future<> do_populate_column_family(distributed& db, sstring sstdir, sstring ks, sstring cf); };