summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2012-06-08 15:21:08 +0100
committerSimon MacMullen <simon@rabbitmq.com>2012-06-08 15:21:08 +0100
commit74306f9bb5b1c6132402b724dced28379c24c8d5 (patch)
treeb7d45e309eece154df23614e7451b61c1437b411 /src
parent432714c7516c59764b3071bc2cde1ac564a844b6 (diff)
downloadrabbitmq-server-git-74306f9bb5b1c6132402b724dced28379c24c8d5.tar.gz
Don't take a write lock if we're not going to write.
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_exchange.erl8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl
index f43fbbe720..4f6959baca 100644
--- a/src/rabbit_exchange.erl
+++ b/src/rabbit_exchange.erl
@@ -408,13 +408,15 @@ unconditional_delete(X = #exchange{name = XName}) ->
{deleted, X, Bindings, rabbit_binding:remove_for_destination(XName)}.
next_serial(XName) ->
- Serial = peek_serial(XName),
+ Serial = peek_serial(XName, write),
ok = mnesia:write(rabbit_exchange_serial,
#exchange_serial{name = XName, next = Serial + 1}, write),
Serial.
-peek_serial(XName) ->
- case mnesia:read(rabbit_exchange_serial, XName, write) of
+peek_serial(XName) -> peek_serial(XName, read).
+
+peek_serial(XName, LockType) ->
+ case mnesia:read(rabbit_exchange_serial, XName, LockType) of
[#exchange_serial{next = Serial}] -> Serial;
_ -> 1
end.