diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2012-04-17 15:37:58 +0100 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2012-04-17 15:37:58 +0100 |
| commit | b4c15dffdfb76eb8254b78f53836e5b777d3b542 (patch) | |
| tree | 1bbc4f6eb62f2d6dd781429545dd307eab07d3fa /src | |
| parent | ea37a22b3883eabd7059a936adb015d11b24f2fa (diff) | |
| download | rabbitmq-server-git-b4c15dffdfb76eb8254b78f53836e5b777d3b542.tar.gz | |
Only notify if the value has changed.
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_runtime_parameters.erl | 42 |
1 files changed, 27 insertions, 15 deletions
diff --git a/src/rabbit_runtime_parameters.erl b/src/rabbit_runtime_parameters.erl index b19b47c5ad..a8fa9d3329 100644 --- a/src/rabbit_runtime_parameters.erl +++ b/src/rabbit_runtime_parameters.erl @@ -65,24 +65,36 @@ format_error(L) -> set0(AppName, Key, Term) -> case lookup_app(AppName) of - {ok, Mod} -> case flatten_errors(validate(Term)) of - ok -> case flatten_errors( - Mod:validate(AppName, Key, Term)) of - ok -> mnesia_update(AppName, Key, Term), - Mod:notify(AppName, Key, Term), - ok; - E -> E - end; - E -> E - end; - E -> E + {ok, Mod} -> + case flatten_errors(validate(Term)) of + ok -> + case flatten_errors(Mod:validate(AppName, Key, Term)) of + ok -> + case mnesia_update(AppName, Key, Term) of + {old, Term} -> ok; + _ -> Mod:notify(AppName, Key, Term) + end, + ok; + E -> + E + end; + E -> + E + end; + E -> + E end. mnesia_update(AppName, Key, Term) -> - ok = rabbit_misc:execute_mnesia_transaction( - fun () -> - ok = mnesia:write(?TABLE, c(AppName, Key, Term), write) - end). + rabbit_misc:execute_mnesia_transaction( + fun () -> + Res = case mnesia:read(?TABLE, {AppName, Key}) of + [] -> new; + [Params] -> {old, Params#runtime_parameters.value} + end, + ok = mnesia:write(?TABLE, c(AppName, Key, Term), write), + Res + end). clear(AppName, Key) -> case clear0(AppName, Key) of |
