diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2012-05-18 16:05:12 +0100 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2012-05-18 16:05:12 +0100 |
| commit | f7760cdee478f3b1134516c4580af93565afca0f (patch) | |
| tree | c45dbf140ca7397aeb918af7a7f1305b7271dd71 | |
| parent | 3babc78551fe2d8126c56b26346f9d808d1730c2 (diff) | |
| download | rabbitmq-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.erl | 14 |
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. |
