From b9e7a7af98ca284f4febc37fede58345ecb8a1d1 Mon Sep 17 00:00:00 2001 From: Sridhar Seshasayee Date: Fri, 3 Jan 2020 14:56:13 +0530 Subject: [PATCH] mon/OSDMonitor: Don't update mon cache settings if rocksdb is not used Currently any update to mon cache config settings like 'mon_memory_target' or 'rocksdb_cache_size' will cause a crash in case rocksdb and priority cache manager is not being used. If rocksdb (and therefore priority cache manager) is not being used, then the update to the mon caches is ignored. Also, reduce the log levels of some important log messages to help in debugging. Fixes: https://tracker.ceph.com/issues/43454 Signed-off-by: Sridhar Seshasayee --- src/mon/OSDMonitor.cc | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index d0d5131ee15d..c83d417ac5c2 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -456,7 +456,7 @@ void OSDMonitor::handle_conf_change(const ConfigProxy& conf, << g_conf()->mon_memory_target << " rocksdb_cache_size:" << g_conf()->rocksdb_cache_size - << ". Invalid size provided." + << ". Unable to update cache size." << dendl; } } @@ -492,6 +492,11 @@ int OSDMonitor::_update_mon_cache_settings() return -EINVAL; } + if (pcm == nullptr && rocksdb_binned_kv_cache == nullptr) { + derr << __func__ << " not using pcm and rocksdb" << dendl; + return -EINVAL; + } + uint64_t old_mon_memory_target = mon_memory_target; uint64_t old_rocksdb_cache_size = rocksdb_cache_size; @@ -530,7 +535,7 @@ int OSDMonitor::_update_mon_cache_settings() pcm->tune_memory(); pcm->balance(); _set_new_cache_sizes(); - dout(10) << __func__ << " Updated mon cache setting." + dout(1) << __func__ << " Updated mon cache setting." << " target: " << target << " min: " << min << " max: " << max @@ -933,7 +938,7 @@ int OSDMonitor::register_cache_with_pcm() pcm->insert("kv", rocksdb_binned_kv_cache, true); pcm->insert("inc", inc_cache, true); pcm->insert("full", full_cache, true); - dout(10) << __func__ << " pcm target: " << target + dout(1) << __func__ << " pcm target: " << target << " pcm max: " << max << " pcm min: " << min << " inc_osd_cache size: " << inc_osd_cache.get_size() @@ -959,7 +964,7 @@ int OSDMonitor::_set_cache_ratios() inc_cache->set_cache_ratio(cache_inc_ratio); full_cache->set_cache_ratio(cache_full_ratio); - dout(10) << __func__ << " kv ratio " << cache_kv_ratio + dout(1) << __func__ << " kv ratio " << cache_kv_ratio << " inc ratio " << cache_inc_ratio << " full ratio " << cache_full_ratio << dendl; @@ -5096,7 +5101,7 @@ void OSDMonitor::_set_new_cache_sizes() inc_osd_cache.set_bytes(inc_alloc); full_osd_cache.set_bytes(full_alloc); - dout(10) << __func__ << " cache_size:" << cache_size + dout(1) << __func__ << " cache_size:" << cache_size << " inc_alloc: " << inc_alloc << " full_alloc: " << full_alloc << " kv_alloc: " << kv_alloc -- 2.47.3