diff options
| author | Alvaro Videla <videlalvaro@gmail.com> | 2015-08-18 15:32:13 +0200 |
|---|---|---|
| committer | Alvaro Videla <videlalvaro@gmail.com> | 2015-08-18 15:32:13 +0200 |
| commit | 85a3027903265e11c829f98667603d45e8e84995 (patch) | |
| tree | b19ce4e4d19bbf50a50f02267be7cbf6e73dc059 | |
| parent | 0fe7916899076f90f6ba3e8e73d077b3bd5b6d12 (diff) | |
| parent | 8c866421e66369c70b2436d5178b4b9afd25df62 (diff) | |
| download | rabbitmq-server-git-85a3027903265e11c829f98667603d45e8e84995.tar.gz | |
Merge pull request #269 from erylee/stable
issue #268 - gen_server2 can fail to dispatch messages sent by a process to itself
| -rw-r--r-- | src/gen_server2.erl | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/gen_server2.erl b/src/gen_server2.erl index fd0e6553b5..ffc075da7f 100644 --- a/src/gen_server2.erl +++ b/src/gen_server2.erl @@ -633,8 +633,15 @@ extend_backoff({backoff, InitialTimeout, MinimumTimeout, DesiredHibPeriod}) -> %%% The MAIN loop. %%% --------------------------------------------------- loop(GS2State = #gs2_state { time = hibernate, - timeout_state = undefined }) -> - pre_hibernate(GS2State); + timeout_state = undefined, + queue = Queue }) -> + case priority_queue:is_empty(Queue) of + true -> + pre_hibernate(GS2State); + false -> + process_next_msg(GS2State) + end; + loop(GS2State) -> process_next_msg(drain(GS2State)). |
