force_store_value for follower

This commit is contained in:
2019-11-19 18:46:05 +01:00
parent 7325f6e12f
commit c5d8e0055b
2 changed files with 61 additions and 19 deletions

View File

@ -80,11 +80,6 @@ class CacheOptionDescription(BaseOption):
properties = option.impl_getproperties()
if 'force_store_value' in properties:
if __debug__:
if option.impl_is_follower():
# problem with index
raise ConfigError(_('the follower "{0}" cannot have '
'"force_store_value" property').format(
option.impl_get_display_name()))
if option.issubdyn():
raise ConfigError(_('the dynoption "{0}" cannot have '
'"force_store_value" property').format(
@ -125,17 +120,39 @@ class CacheOptionDescription(BaseOption):
values = config_bag.context.cfgimpl_get_values()
for subpath, option in self._cache_force_store_values:
if not values._p_.hasvalue(subpath):
option_bag = OptionBag()
option_bag.set_option(option,
subpath,
None,
config_bag)
option_bag.properties = frozenset()
values._p_.setvalue(subpath,
values.getvalue(option_bag),
owners.forced,
None,
False)
if option.impl_is_follower():
option_bag = OptionBag()
leader = option.impl_get_leadership().get_leader()
option_bag.set_option(leader,
leader.impl_getpath(),
None,
config_bag)
option_bag.properties = frozenset()
follower_len = len(values.getvalue(option_bag))
for index in range(follower_len):
option_bag = OptionBag()
option_bag.set_option(option,
subpath,
index,
config_bag)
option_bag.properties = frozenset()
values._p_.setvalue(subpath,
values.getvalue(option_bag),
owners.forced,
index,
False)
else:
option_bag = OptionBag()
option_bag.set_option(option,
subpath,
None,
config_bag)
option_bag.properties = frozenset()
values._p_.setvalue(subpath,
values.getvalue(option_bag),
owners.forced,
None,
False)
commit = True
if commit: