template<LockPolicy lp>
int md_config_impl<lp>::set_mon_vals(CephContext *cct,
ConfigValues& values,
- const ConfigProxy& proxy,
const map<string,string>& kv,
config_callback config_cb)
{
values.rm_val(name, CONF_MON);
});
values_bl.clear();
- _apply_changes(values, proxy, nullptr);
+ update_legacy_vals(values);
return 0;
}
/*
* apply changes until the cluster name is assigned
*/
- if (values.cluster.size())
+ if (values.cluster.size()) {
+ // meta expands could have modified anything. Copy it all out again.
+ update_legacy_vals(values);
_apply_changes(values, proxy, oss);
+ }
}
template<LockPolicy lp>
* have changed. */
typedef std::map < md_config_obs_t*, std::set <std::string> > rev_obs_map_t;
- // meta expands could have modified anything. Copy it all out again.
- update_legacy_vals(values);
-
// create the reverse observer mapping, mapping observers to the set of
// changed keys that they'll get.
rev_obs_map_t robs;
template<LockPolicy lp>
int md_config_impl<lp>::injectargs(ConfigValues& values,
- const ConfigProxy& proxy,
const std::string& s, std::ostream *oss)
{
int ret;
*oss << "\n";
ret = -EINVAL;
}
- _apply_changes(values, proxy, oss);
+ update_legacy_vals(values);
return ret;
}
set_val(values, i.first, i.second);
}
- if (may_reexpand_meta.size())
+ if (may_reexpand_meta.size()) {
+ // meta expands could have modified anything. Copy it all out again.
+ update_legacy_vals(values);
_apply_changes(values, proxy, NULL);
+ }
}
template<LockPolicy lp>
/// Set a values from mon
int set_mon_vals(CephContext *cct,
ConfigValues& values,
- const ConfigProxy& proxy,
const map<std::string,std::string>& kv,
config_callback config_cb);
// Called by the Ceph daemons to make configuration changes at runtime
- int injectargs(ConfigValues& values, const ConfigProxy& proxy,
- const std::string &s, std::ostream *oss);
+ int injectargs(ConfigValues& values,
+ const std::string &s,
+ std::ostream *oss);
// Set a configuration value, or crash
// Metavariables will be expanded.
}
// change `values` in-place
void finalize_reexpand_meta() {
-<<<<<<< HEAD
- Mutex::Locker l(lock);
- config.finalize_reexpand_meta(values, *this);
- }
- void add_observer(md_config_obs_t* obs) {
- Mutex::Locker l(lock);
- config.add_observer(obs);
- }
- void remove_observer(md_config_obs_t* obs) {
- Mutex::Locker l(lock);
- config.remove_observer(obs);
- }
- void call_all_observers() {
- Mutex::Locker l(lock);
- config.call_all_observers(*this);
-=======
Mutex::Locker l{lock};
- if (config.finalize_reexpand_meta(values, obs_mgr)) {
- obs_mgr.apply_changes(values.changed, *this, nullptr);
- values.changed.clear();
- }
+ config.finalize_reexpand_meta(values, *this);
}
void add_observer(md_config_obs_t* obs) {
Mutex::Locker l{lock};
- obs_mgr.add_observer(obs);
+ config.add_observer(obs);
}
void remove_observer(md_config_obs_t* obs) {
Mutex::Locker l{lock};
- obs_mgr.remove_observer(obs);
+ config.remove_observer(obs);
}
void call_all_observers() {
Mutex::Locker l{lock};
// An alternative might be to pass a std::unique_lock to
// handle_conf_change and have a version of get_var that can take it
// by reference and lock as appropriate.
- obs_mgr.call_all_observers(*this);
->>>>>>> 9a2bc3c2eb... wip
+ config.call_all_observers(*this);
}
void set_safe_to_start_threads() {
config.set_safe_to_start_threads();
const map<std::string,std::string>& kv,
md_config_t::config_callback config_cb) {
Mutex::Locker l{lock};
- config.set_mon_vals(cct, values, *this, kv, config_cb);
+ int ret = config.set_mon_vals(cct, values, kv, config_cb);
+ config._apply_changes(values, *this, nullptr);
+ values.changed.clear();
+ return ret;
}
int injectargs(const std::string &s, std::ostream *oss) {
Mutex::Locker l{lock};
- config.injectargs(values, *this, s, oss);
+ int ret = config.injectargs(values, s, oss);
+ config._apply_changes(values, *this, oss);
+ values.changed.clear();
+ return ret;
}
void parse_env(const char *env_var = "CEPH_ARGS") {
Mutex::Locker l{lock};