summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2012-05-18 16:05:12 +0100
committerSimon MacMullen <simon@rabbitmq.com>2012-05-18 16:05:12 +0100
commitf7760cdee478f3b1134516c4580af93565afca0f (patch)
treec45dbf140ca7397aeb918af7a7f1305b7271dd71
parent3babc78551fe2d8126c56b26346f9d808d1730c2 (diff)
downloadrabbitmq-server-git-f7760cdee478f3b1134516c4580af93565afca0f.tar.gz
We can't now write the serial record when we declare the exchange; an exchange can become federated at any time.
-rw-r--r--src/rabbit_exchange.erl14
1 files changed, 5 insertions, 9 deletions
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl
index d87c607d32..ab548f38f3 100644
--- a/src/rabbit_exchange.erl
+++ b/src/rabbit_exchange.erl
@@ -185,13 +185,7 @@ declare(XName, Type, Durable, AutoDelete, Internal, Args) ->
map_create_tx(true) -> transaction;
map_create_tx(false) -> none.
-store(X = #exchange{name = Name}) ->
- ok = mnesia:write(rabbit_exchange, X, write),
- case serialise_events(X) of
- true -> S = #exchange_serial{name = Name, next = 1},
- ok = mnesia:write(rabbit_exchange_serial, S, write);
- false -> ok
- end.
+store(X) -> ok = mnesia:write(rabbit_exchange, X, write).
%% Used with binaries sent over the wire; the type may not exist.
check_type(TypeBin) ->
@@ -415,8 +409,10 @@ unconditional_delete(X = #exchange{name = XName}) ->
{deleted, X, Bindings, rabbit_binding:remove_for_destination(XName)}.
next_serial(XName) ->
- [#exchange_serial{next = Serial}] =
- mnesia:read(rabbit_exchange_serial, XName, write),
+ Serial = case mnesia:read(rabbit_exchange_serial, XName, write) of
+ [#exchange_serial{next = Next}] -> Next;
+ [] -> 1
+ end,
ok = mnesia:write(rabbit_exchange_serial,
#exchange_serial{name = XName, next = Serial + 1}, write),
Serial.