summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2011-10-19 15:23:03 +0100
committerSimon MacMullen <simon@rabbitmq.com>2011-10-19 15:23:03 +0100
commit59aec8cca3cbbfb822e5931c7a355c7c4a5a7c6e (patch)
treed38ec54ab52935b2f4ea923ad7ee40c5dc91865b
parentb1bc394b1b48e2d6a8d088232f02d175c9e68ab5 (diff)
downloadrabbitmq-server-59aec8cca3cbbfb822e5931c7a355c7c4a5a7c6e.tar.gz
3) Cache results of rabbit_registry:lookup_module() for exchange types in the process dictionary.
-rw-r--r--src/rabbit_exchange.erl8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl
index b96a2bc8..e1e7245f 100644
--- a/src/rabbit_exchange.erl
+++ b/src/rabbit_exchange.erl
@@ -358,5 +358,9 @@ peek_serial(XName) ->
%% Used with atoms from records; e.g., the type is expected to exist.
type_to_module(T) ->
- {ok, Module} = rabbit_registry:lookup_module(exchange, T),
- Module.
+ case get({xtype_to_module, T}) of
+ undefined -> {ok, Module} = rabbit_registry:lookup_module(exchange, T),
+ put({xtype_to_module, T}, Module),
+ Module;
+ Module -> Module
+ end.