Commit Graph

59481 Commits

Author SHA1 Message Date
Hubert Plociniczak 051da30ab8 Merge bug19552 into default 2008-10-24 11:06:10 +01:00
Hubert Plociniczak feb1e47a9c Merge bug19552 into default 2008-10-24 10:49:15 +01:00
Hubert Plociniczak 24558d7f68 Merge bug19382 into default 2008-10-23 16:11:32 +01:00
Matthias Radestock b19e4bb800 merge bug19468_channels into bug19468 2008-10-22 07:51:58 +01:00
Matthias Radestock 25a63c3e34 hibernate some processes to conserve memory
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.
2008-10-21 15:59:41 +01:00
Matthias Radestock bcd4affd32 raise memory alarm threshold
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.
2008-10-21 15:46:05 +01:00
Hubert Plociniczak 96af7bf702 Removed check_tools script since Build-Depends
will handle it itself.
2008-10-19 22:52:00 +01:00
Hubert Plociniczak 5b995a2b87 Forgot about perl 2008-10-19 02:19:38 +01:00
Hubert Plociniczak 743944c0e7 Added missing build dependencies for debian 2008-10-19 02:13:47 +01:00
Matthias Radestock 3e0231767b merge default into bug18732 2008-10-17 17:21:02 +01:00
Hubert Plociniczak 57dee61bf7 Merge bug19489 into default 2008-10-17 16:18:21 +01:00
Hubert Plociniczak 3622512816 Merge bug19329 into default 2008-10-17 13:22:04 +01:00
Emile Joubert bb98450a0e Fixed typo 2008-10-17 00:13:57 +01:00
Hubert Plociniczak 4c56b7bf21 Merge default into bug19382 2008-10-16 18:47:19 +01:00
Hubert Plociniczak cb732f4b17 Removed unused variables in the Makefile 2008-10-16 18:42:00 +01:00
Hubert Plociniczak 635e10a074 Spec no longer requires non-standard macros,
include rpm-specifc files as sources instead of patch
2008-10-16 18:33:44 +01:00
Ben Hood c1374a89f7 Fixed QA remarks 2008-10-16 14:02:06 +01:00
Ben Hood dbf935be37 Merged default into bug19250 2008-10-16 13:03:49 +01:00
Matthias Radestock e138ddcf83 merge bug19552 into bug19468_channels
The former triggered errors in the latter
2008-10-16 06:51:33 +01:00
Matthias Radestock 4df43062a0 fix 'duplicate_next' error when sending messages directly to proxied process
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.
2008-10-16 06:11:33 +01:00
Matthias Radestock 9d11200ccb some explanation 2008-10-16 05:46:04 +01:00
Matthias Radestock 9eb25deee4 wire up channels to rabbit_alarm
We propagate changes in the high memory alarm status as channel.flow
messages to the client. The channel.flow_ok replies are simply
accepted.
2008-10-16 05:45:08 +01:00
Matthias Radestock d2f22dbbfa make rabbit_alarm usable
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.
2008-10-16 05:36:51 +01:00
Matthias Radestock abce126e2e cosmetic 2008-10-16 04:00:11 +01:00
Matthias Radestock 3a178fdb53 branch off for effect-less alarm handling
so we can later experiment with different effects
2008-10-16 03:56:41 +01:00
Matthias Radestock 7d47d3c66f merge bug19432 into default 2008-10-15 12:19:39 +01:00
Matthias Radestock ee541db2ac cosmetic 2008-10-15 12:15:28 +01:00
Ben Hood 00ca078719 Got rid of unecessary queue:is_empty 2008-10-15 11:39:07 +01:00
Ben Hood e4f2aeaebe Added function for Rabbiter 2008-10-13 22:51:23 +01:00
Ben Hood 12e28a7f22 Got into a loop, I blame hg 2008-10-13 22:37:17 +01:00
Matthias Radestock 1aceb2cc30 produce a nicer error message for common queue disappearance case 2008-10-13 21:56:26 +01:00
Matthias Radestock 45090533fe exit with a proper protocol error when commit/rollback fail 2008-10-13 21:37:02 +01:00
Ben Hood 3ea54704a7 Set is the default 2008-10-13 21:27:33 +01:00
Ben Hood 69305918ca Changed index from ordered_set to set for durable routes 2008-10-13 21:09:53 +01:00
Matthias Radestock 4f2846ca1f don't log errors during delivery
If the target queue died normally we don't care, and if it died
abnormally the reason is logged by the queue supervisor. In both cases
we treat the message as unrouted.
2008-10-13 21:05:02 +01:00
Ben Hood 7c77eb2025 Nuked a space 2008-10-13 19:18:12 +01:00
Ben Hood a81de67ef1 Used record wildcard match feature 2008-10-13 19:12:16 +01:00
Ben Hood b35534595c Added wilcards to every argument field in binding record 2008-10-13 18:58:20 +01:00
Ben Hood de5b4fe2d4 Added arguments field to binding 2008-10-13 18:26:55 +01:00
Matthias Radestock 908357efbd maybe_auto_delete should always return ok 2008-10-12 23:43:16 +01:00
Matthias Radestock 07f212e294 merge bug19332 into default 2008-10-12 17:36:14 +01:00
Matthias Radestock acd67e5e3b merge bug19332 into default 2008-10-12 17:35:36 +01:00
Matthias Radestock 75fba37dd3 cosmetic 2008-10-12 16:03:42 +01:00
Matthias Radestock 6c6dbef97f some minor formatting fixes 2008-10-12 11:59:28 +01:00
Matthias Radestock 979415ea8b refactoring: never construct reverse routes/bindings directly 2008-10-12 11:51:01 +01:00
Matthias Radestock b865db3a6d fix indentation and comments 2008-10-12 11:44:58 +01:00
Matthias Radestock 8512cde5b3 inline delete_bindings/1
and also refactor indexed_delete to use a list comprehension instead
of lists:foreach and return 'ok'.
2008-10-12 11:35:34 +01:00
Matthias Radestock e3a6cb0571 rejig call_with_exchange
We don't really need two flavours of call_with_exchange.

In delete_bindings/1 we can assume the exchange exists - this code is
called as part of queue deletion and we don't care about exchanges
that have gone missing.

Also, it is sufficient to use an ordinary read rather than wread.
2008-10-12 11:24:45 +01:00
Ben Hood 4c33ba0972 Removed superfluous comment 2008-10-11 11:50:25 +01:00
Ben Hood 92b89eb0a9 Don't hassle the HOF 2008-10-11 11:49:41 +01:00