diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2014-06-09 13:45:43 +0100 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2014-06-09 13:45:43 +0100 |
commit | a534dc355037d373aaf0b63215beae6775173bf9 (patch) | |
tree | 3997dcd5a5cdf390242e9346121898b51e0a7dd2 /src/rabbit_exchange.erl | |
parent | 856524f258638e1b22381dea6c08b3fc3ff49799 (diff) | |
download | rabbitmq-server-a534dc355037d373aaf0b63215beae6775173bf9.tar.gz |
Make decorators field in exchange and queue transient, i.e. we recalcualte it on recovery in case plugins have changed. Also document a bit more clearly what the lifecycle is of the different fields in these records since that area is becoming confusing.
Diffstat (limited to 'src/rabbit_exchange.erl')
-rw-r--r-- | src/rabbit_exchange.erl | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl index 4d4a2a58..f1b2d694 100644 --- a/src/rabbit_exchange.erl +++ b/src/rabbit_exchange.erl @@ -158,12 +158,13 @@ serial(#exchange{name = XName} = X) -> end. declare(XName, Type, Durable, AutoDelete, Internal, Args) -> - X = rabbit_policy:set(#exchange{name = XName, - type = Type, - durable = Durable, - auto_delete = AutoDelete, - internal = Internal, - arguments = Args}), + X = rabbit_exchange_decorator:set( + rabbit_policy:set(#exchange{name = XName, + type = Type, + durable = Durable, + auto_delete = AutoDelete, + internal = Internal, + arguments = Args})), XT = type_to_module(Type), %% We want to upset things if it isn't ok ok = XT:validate(X), @@ -195,7 +196,8 @@ declare(XName, Type, Durable, AutoDelete, Internal, Args) -> map_create_tx(true) -> transaction; map_create_tx(false) -> none. -store(X) -> ok = mnesia:write(rabbit_exchange, X, write). +store(X) -> ok = mnesia:write( + rabbit_exchange, rabbit_exchange_decorator:set(X), write). %% Used with binaries sent over the wire; the type may not exist. check_type(TypeBin) -> |