mirror of
https://github.com/scylladb/scylladb.git
synced 2026-05-29 11:10:40 +00:00
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:
17
main.cc
17
main.cc
@@ -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();
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user