summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@lshift.net>2010-01-21 13:20:21 +0000
committerMatthew Sackman <matthew@lshift.net>2010-01-21 13:20:21 +0000
commitbea21543c663fcfe6b3fad92d4a23e84934102bd (patch)
treebd799076132bcbb34cc5e6542c7fa86ae7ead3da
parent18f07de1ed10785087a03f44003c3f3c115b7b8d (diff)
downloadrabbitmq-server-bug21453.tar.gz
Implemented limitbug21453
-rw-r--r--src/gen_server2.erl9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/gen_server2.erl b/src/gen_server2.erl
index 53edf8de..5b95c545 100644
--- a/src/gen_server2.erl
+++ b/src/gen_server2.erl
@@ -179,6 +179,8 @@
-import(error_logger, [format/2]).
+-define(DRAIN_PER_PROCESS, 1000).
+
%%%=========================================================================
%%% Specs. These exist only to shut up dialyzer's warnings
%%%=========================================================================
@@ -474,8 +476,13 @@ loop(Parent, Name, State, Mod, Time, TimeoutState, Queue, Debug) ->
drain(Queue), Debug).
drain(Queue) ->
+ drain(Queue, ?DRAIN_PER_PROCESS).
+
+drain(Queue, 0) ->
+ Queue;
+drain(Queue, N) ->
receive
- Input -> drain(in(Input, Queue))
+ Input -> drain(in(Input, Queue), N - 1)
after 0 -> Queue
end.