Fixed issue in cluster mode, denoted by Khy H in the OpenACS forum
A new command "ad_parameter_cache_flush_dict" was introduced to handle
the case, where a cluster node modifies a parameter value without
having it read before. This case could lead to a coherency problem for
parameter values.
Background:
This proc is necessary in cases, where a node writes a new
parameter value before it has read the old one.
Since a plain "nsv_dict unset ad_param $key $parameter_name"
raises an exception, when the pair does not exist, and we do
not want to allow in cluster requests arbitrary "catch"
commands, we allow "ad_parameter_cache_flush_dict" instead.
Probably, the best solution is to add support for
nsv_dict unset -nocomplain -- ad_param $key $parameter_nam
The existing nsv_dict was built after Tcl's "dict unset",
which does not have the "-nocomplain" option either. However,
an atomic operation would certainly be preferable over an exists/unset
pair, which is no acceptable solution.
For details, see
https://openacs.org/forums/message-view?message_id=5822470