diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2012-06-08 15:21:08 +0100 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2012-06-08 15:21:08 +0100 |
| commit | 74306f9bb5b1c6132402b724dced28379c24c8d5 (patch) | |
| tree | b7d45e309eece154df23614e7451b61c1437b411 /src | |
| parent | 432714c7516c59764b3071bc2cde1ac564a844b6 (diff) | |
| download | rabbitmq-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.erl | 8 |
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. |
