diff options
author | Matthew Sackman <matthew@lshift.net> | 2010-01-21 13:20:21 +0000 |
---|---|---|
committer | Matthew Sackman <matthew@lshift.net> | 2010-01-21 13:20:21 +0000 |
commit | bea21543c663fcfe6b3fad92d4a23e84934102bd (patch) | |
tree | bd799076132bcbb34cc5e6542c7fa86ae7ead3da | |
parent | 18f07de1ed10785087a03f44003c3f3c115b7b8d (diff) | |
download | rabbitmq-server-bug21453.tar.gz |
Implemented limitbug21453
-rw-r--r-- | src/gen_server2.erl | 9 |
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. |