diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2015-01-09 16:04:29 +0000 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2015-01-09 16:04:29 +0000 |
commit | 4b415bc70966db34b49f0ae9bb8ec6a41122733f (patch) | |
tree | aaffea412be9e5c9145c0aa3f18d33f278d0dc7c | |
parent | f869f99612facf92219be406ef62ec7c836644ae (diff) | |
download | rabbitmq-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.erl | 2 | ||||
-rw-r--r-- | src/truncate.erl | 2 |
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]). |