summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* hibernate some processes to conserve memorybug19468_channelsMatthias Radestock2008-10-212-34/+49
| | | | | | | | | | | | | | | | | | In my experiments I encountered situations where rabbit would not recover from a high memory alert even though all messages had been drained from it. By inspecting the running processes I determined that queue and channel processes sometimes hung on to garbage. Erlang's gc is per-process and triggered by process reduction counts, which means an idle process will never perform a gc. This explains the behaviour - the publisher channel goes idle when channel flow control is activated and the queue process goes idle once all messages have been drained from it. Hibernating idle processes forces a gc, as well as generally reducing memory consumption. Currently only channel and queue processes are hibernating, since these are the only two that seemed to be causing problems in my tests. We may want to extend hibernation to other processes in the future.
* raise memory alarm thresholdMatthias Radestock2008-10-212-0/+2
| | | | | | The default 80% is just too low for many systems - I have less than that on tanto most of the time. It remains to be seen whether the new figure works ok for most users.
* merge bug19552 into bug19468_channelsMatthias Radestock2008-10-167-78/+95
|\ | | | | | | The former triggered errors in the latter
| * fix 'duplicate_next' error when sending messages directly to proxied processbug19552Matthias Radestock2008-10-161-5/+8
| | | | | | | | | | | | | | The buffering_proxy:mainloop was unconditionally requesting new messages from the proxy. It should only do that when it has just finished handling the messages given to it by the proxy in response to a previous request, and not after handling a direct message.
| * merge bug19332 into defaultMatthias Radestock2008-10-123-4/+6
| |\
| | * merge default into bug19332bug19332Hubert Plociniczak2008-09-153-4/+6
| | |\
| | | * Fixed checking build dependencies in rpmsHubert Plociniczak2008-09-152-1/+4
| | | | | | | | | | | | | | | | | | | | while building on Debian systems. Unfortunately .spec doesn't have 'not' logic.
| | | * Added python-json as a dependency to the debian/rpm packagesHubert Plociniczak2008-09-042-1/+2
| | | |
| * | | merge bug19485 into defaultHubert Plociniczak2008-10-052-50/+63
| |\ \ \
| | * \ \ Merged bug19219 into defaultBen Hood2008-10-042-3/+11
| | |\ \ \
| | * | | | cosmetic refactoringbug19219Matthias Radestock2008-10-011-7/+7
| | | | | |
| | * | | | oopsMatthias Radestock2008-09-301-1/+1
| | | | | |
| | * | | | modulate gen_server:call timeout when doing work in parallelMatthias Radestock2008-09-302-50/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we fire off lots of gen_server:calls in parallel, we may create enough work for the VM to cause the calls to time out - since the amount of work that can actually be done in parallel is finite. The fix is to adjust the timeout based on the total workload. Alternatively we could not have any timeout at all, but that is bad Erlang style since a small error somewhere could result in stuck processes. I moved the parallelisation - and hence timeout modulation - from the channel into the amqqueue module, changing the API in the process - commit, rollback and notify_down now all operate on lists of QPids (and I've renamed the functions to make that clear). The alternative would have been to add Timeout params to these three functions, but I reckon the API is cleaner this way, particularly considering that rollback doesn't actually do a call - it does a cast and hence doesn't require a timeout - so in the alternative API we'd either have to expose that fact indirectly by not having a Timeout param, or have a bogus Timeout param, neither of which is particularly appealing. I considered making the functions take sets instead of lists, since that's what the channel code produces, plus sets have a more efficient length operation. However, API-wise I reckon lists are nicer, plus it means I can give a more precise type to dialyzer - sets would be opaque and non-polymorphic.
| * | | | | propagate channel/connection errors when in closing statebug19485Matthias Radestock2008-10-031-19/+18
| | |/ / / | |/| | |
* | | | | some explanationMatthias Radestock2008-10-161-0/+3
| | | | |
* | | | | wire up channels to rabbit_alarmMatthias Radestock2008-10-161-1/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We propagate changes in the high memory alarm status as channel.flow messages to the client. The channel.flow_ok replies are simply accepted.
* | | | | make rabbit_alarm usableMatthias Radestock2008-10-161-5/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This now supports the registration of alertee processes with callback MFAs. We monitor the alertee process to keep the alertee list current, and notify alertees of initial high memory conditions, and any changes.
* | | | | cosmeticMatthias Radestock2008-10-161-1/+1
| | | | |
* | | | | branch off for effect-less alarm handlingMatthias Radestock2008-10-161-2/+15
| | | | | | | | | | | | | | | | | | | | so we can later experiment with different effects
* | | | | beginnings of reacting to low memory conditionsMatthias Radestock2008-10-044-2/+89
|/ / / / | | | | | | | | | | | | configure memsup and hook in our own alarm handler
* | | | merge bug18784Matthias Radestock2008-10-0147-1224/+1274
|\ \ \ \ | |/ / /
| * | | Merged 19455 into defaultBen Hood2008-09-280-0/+0
| |\ \ \ | | |/ /
| * | | disable Naglebug19455Matthias Radestock2008-09-282-2/+6
| |/ /
| * | merge bug19164 into defaultMatthias Radestock2008-09-110-0/+0
| |\ \
| * | | cosmeticbug19164Matthias Radestock2008-09-111-7/+5
| | | |
| * | | cosmeticHubert Plociniczak2008-09-111-6/+8
| | | |
| * | | Use parse_status to correctly determineHubert Plociniczak2008-09-111-3/+4
| | | | | | | | | | | | | | | | the status of the node. No need to print node's apps.
| * | | Added status command to rabbit_mutli, init.d scriptsHubert Plociniczak2008-09-114-81/+141
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | now use that command. Used status command in init.d scripts to check if the server is running before stopping it. Fixed various indentation problems in init.d scripts. Synchronized the init.d in Debian and RPM to behave in a similar way.
| * | merge bug19193 into defaultMatthias Radestock2008-09-100-0/+0
| |\ \
| * \ \ merge default into bug19193bug19193Hubert Plociniczak2008-09-1012-20/+41
| |\ \ \ | | |/ /
| | * | merge bug19166 into defaultMatthias Radestock2008-09-093-93/+111
| | |\ \
| | | * | Start the RabbitMQ server after addingbug19166Hubert Plociniczak2008-09-091-0/+1
| | | | | | | | | | | | | | | | | | | | it to chkconfig.
| | * | | merge bug19144 into defaultMatthias Radestock2008-09-090-0/+0
| | |\ \ \
| | * | | | Updated the license to reflect the current state.bug19144Hubert Plociniczak2008-09-091-3/+3
| | |/ / / | | | | | | | | | | | | | | | | | | | | Debian packaging has the same license as the broker itself.
| | * | | merge bug19200 into defaultMatthias Radestock2008-09-0811-18/+38
| | |\ \ \ | | | | |/ | | | |/|
| | | * | Removed dotHubert Plociniczak2008-09-041-1/+1
| | | | |
| | | * | Only debian/rules file needs to have exec permissionHubert Plociniczak2008-09-041-1/+1
| | | | |
| | | * | tabs -> spacesMatthias Radestock2008-08-292-2/+2
| | | | |
| | | * | merge bug17070 into defaultMatthias Radestock2008-08-2636-1014/+443
| | | |\ \
| | | | * \ merge bug19089 into defaultMatthias Radestock2008-08-1428-999/+407
| | | | |\ \
| | | | * | | SCRIPT_HOME variable in windows points to thebug19089Hubert Plociniczak2008-08-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | directory of the rabbitmq-multi.bat script
| | | | * | | Use %~dp0 to find the ebin directory under windowsHubert Plociniczak2008-07-293-3/+3
| | | | | | |
| | | | * | | Use dirname $0 consistently to find the ebin dir.Tony Garnock-Jones2008-07-293-3/+3
| | | | | | |
| | | * | | | support default empty AMQP tablesbug17070Matthias Radestock2008-08-261-1/+10
| | | | | | |
| | | * | | | fixed bug in emitting erlang binary stringKarol Skocik2008-08-261-1/+1
| | | | | | |
| | | * | | | added mapping which decides how to convert Python value to Erlang default valueKarol Skocik2008-08-081-1/+9
| | | | | | |
| | | * | | | Migrate branch bug17070Tony Garnock-Jones2008-07-031-7/+10
| | | | | | |
| * | | | | | Refactoring of call_all_nodes/1Hubert Plociniczak2008-09-101-28/+18
| | | | | | |
| * | | | | | Use lists:foreach instead of tail recursionHubert Plociniczak2008-09-102-17/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | in rotate_logs command. Updated usage function() Reverted change in rabbitmq-server.spec that didn't belong to this bug.
| * | | | | | Continue rotate_logs command even whenHubert Plociniczak2008-09-091-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | the command on specific node returns an error. Display the error message in that case only.