summaryrefslogtreecommitdiff
path: root/src/rabbit_exchange.erl
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2014-06-09 13:45:43 +0100
committerSimon MacMullen <simon@rabbitmq.com>2014-06-09 13:45:43 +0100
commita534dc355037d373aaf0b63215beae6775173bf9 (patch)
tree3997dcd5a5cdf390242e9346121898b51e0a7dd2 /src/rabbit_exchange.erl
parent856524f258638e1b22381dea6c08b3fc3ff49799 (diff)
downloadrabbitmq-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.erl16
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) ->