storage_proxy: restore optional hinted handoff

Since hinted handoff for materialized views is now a separate entity,
regular hinted handoff can go back to being optional.
This commit is contained in:
Piotr Sarna
2018-05-28 11:32:09 +02:00
parent a6aae369da
commit f12fdcffdb
3 changed files with 17 additions and 19 deletions

17
main.cc
View File

@@ -518,14 +518,15 @@ int main(int ac, char** av) {
directories.insert(db.local().get_config().commitlog_directory());
supervisor::notify("creating hints directories");
boost::filesystem::path hints_base_dir(db.local().get_config().hints_directory());
dirs.touch_and_lock(db.local().get_config().hints_directory()).get();
directories.insert(db.local().get_config().hints_directory());
for (unsigned i = 0; i < smp::count; ++i) {
sstring shard_dir((hints_base_dir / seastar::to_sstring(i).c_str()).native());
dirs.touch_and_lock(shard_dir).get();
directories.insert(std::move(shard_dir));
if (hinted_handoff_enabled) {
boost::filesystem::path hints_base_dir(db.local().get_config().hints_directory());
dirs.touch_and_lock(db.local().get_config().hints_directory()).get();
directories.insert(db.local().get_config().hints_directory());
for (unsigned i = 0; i < smp::count; ++i) {
sstring shard_dir((hints_base_dir / seastar::to_sstring(i).c_str()).native());
dirs.touch_and_lock(shard_dir).get();
directories.insert(std::move(shard_dir));
}
}
boost::filesystem::path view_pending_updates_base_dir = boost::filesystem::path(db.local().get_config().data_file_directories()[0]) / "view_pending_updates";
sstring view_pending_updates_base_dir_str = view_pending_updates_base_dir.native();

View File

@@ -726,21 +726,19 @@ storage_proxy::storage_proxy(distributed<database>& db, stdx::optional<std::vect
});
_stats.register_metrics_local();
_hints_enabled_for_user_writes = bool(hinted_handoff_enabled);
if (!hinted_handoff_enabled) {
hinted_handoff_enabled.emplace();
}
supervisor::notify("creating hints manager");
slogger.trace("hinted DCs: {}", *hinted_handoff_enabled);
const db::config& cfg = _db.local().get_config();
// Give each hints manager 10% of the available disk space. Give each shard an equal share of the available space.
db::hints::resource_manager::max_shard_disk_space_size = boost::filesystem::space(cfg.hints_directory().c_str()).capacity / (10 * smp::count);
_hints_manager.emplace(cfg.hints_directory(), *hinted_handoff_enabled, cfg.max_hint_window_in_ms(), _hints_resource_manager, _db);
if (hinted_handoff_enabled) {
supervisor::notify("creating hints manager");
slogger.trace("hinted DCs: {}", *hinted_handoff_enabled);
_hints_manager.emplace(cfg.hints_directory(), *hinted_handoff_enabled, cfg.max_hint_window_in_ms(), _hints_resource_manager, _db);
_hints_manager->register_metrics("hints_manager");
_hints_resource_manager.register_manager(*_hints_manager);
}
_hints_manager->register_metrics("hints_manager");
_hints_for_views_manager.register_metrics("hints_for_views_manager");
_hints_resource_manager.register_manager(*_hints_manager);
_hints_resource_manager.register_manager(_hints_for_views_manager);
}
@@ -3647,7 +3645,7 @@ get_restricted_ranges(locator::token_metadata& tm, const schema& s, dht::partiti
}
bool storage_proxy::hints_enabled(db::write_type type) noexcept {
return _hints_enabled_for_user_writes || (type == db::write_type::VIEW && bool(_hints_manager));
return bool(_hints_manager) || type == db::write_type::VIEW;
}
db::hints::manager& storage_proxy::hints_manager_for(db::write_type type) {

View File

@@ -152,7 +152,6 @@ private:
db::hints::resource_manager _hints_resource_manager;
stdx::optional<db::hints::manager> _hints_manager;
db::hints::manager _hints_for_views_manager;
bool _hints_enabled_for_user_writes = false;
stats _stats;
static constexpr float CONCURRENT_SUBREQUESTS_MARGIN = 0.10;
// for read repair chance calculation