summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2015-01-09 16:04:29 +0000
committerSimon MacMullen <simon@rabbitmq.com>2015-01-09 16:04:29 +0000
commit4b415bc70966db34b49f0ae9bb8ec6a41122733f (patch)
treeaaffea412be9e5c9145c0aa3f18d33f278d0dc7c
parentf869f99612facf92219be406ef62ec7c836644ae (diff)
downloadrabbitmq-server-bug26327.tar.gz
So that term_to_binary/1 there somehow seemed to end up creating a lot of garbage under heavy load; pumping millions of messages into a queue became almost quadratic. I'm not sure how or why, but let's try another tactic.bug26327
-rw-r--r--src/rabbit_variable_queue.erl2
-rw-r--r--src/truncate.erl2
2 files changed, 2 insertions, 2 deletions
diff --git a/src/rabbit_variable_queue.erl b/src/rabbit_variable_queue.erl
index a0f14b0a..8a1e52cf 100644
--- a/src/rabbit_variable_queue.erl
+++ b/src/rabbit_variable_queue.erl
@@ -1414,7 +1414,7 @@ determine_persist_to(Msg, #message_properties{size = Size}) ->
%% anyway.
case Size >= IndexMaxSize of
true -> msg_store;
- false -> case size(term_to_binary(Msg)) >= IndexMaxSize of
+ false -> case truncate:term_limit(Msg, IndexMaxSize) of
true -> msg_store;
false -> queue_index
end
diff --git a/src/truncate.erl b/src/truncate.erl
index 820af1bf..3e180a3a 100644
--- a/src/truncate.erl
+++ b/src/truncate.erl
@@ -20,7 +20,7 @@
-record(params, {content, struct, content_dec, struct_dec}).
--export([log_event/2, term/2]).
+-export([log_event/2, term/2, term_limit/2]).
%% exported for testing
-export([test/0]).