summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* assemble fragments in correct orderbug21335Matthias Radestock2009-08-091-10/+6
| | | | | and handle the case where both props are available in both binary and decoded form.
* merge default into bug21335Matthias Radestock2009-08-098-95/+338
|\
| * merge bug21087 into defaultMatthias Radestock2009-08-083-83/+300
| |\
| | * factor out common termination handlingbug21087Matthias Radestock2009-08-071-18/+12
| | |
| | * don't ignore Debug info in pre/post-hibernate hook return handlingMatthias Radestock2009-08-071-6/+6
| | |
| | * refactoring of pre/post hibernation codeMatthias Radestock2009-08-071-31/+25
| | | | | | | | | | | | to make it simpler and shorter
| | * trimmed some fat from docsMatthias Radestock2009-08-061-12/+8
| | |
| | * more documentationMatthew Sackman2009-08-061-26/+32
| | |
| | * documentationMatthew Sackman2009-08-061-5/+10
| | |
| | * All done.Matthew Sackman2009-08-061-66/+80
| | |
| | * Matthias wanted to be able to cope with the possibility that we get woken up ↵Matthew Sackman2009-08-031-9/+15
| | | | | | | | | | | | without having a msg to receive. We have no idea if this is possible. Nevertheless, in the previous code, it would block waiting for a msg (mirroring OTP behaviour). Now it'll work, but we have to avoid a potential crash elsewher.
| | * The bug was not as advertised (it actually popped up when merging into ↵Matthew Sackman2009-08-031-5/+10
| | | | | | | | | | | | 20980). However, we should definitely make sure we receive at least 1 msg when coming out of hibernate, and in loop we don't care too much. Also, use now() to seed the rng as erlang doesn't do it for you (rng state is implicitly per process).
| | * All done.Matthew Sackman2009-08-032-70/+82
| | | | | | | | | | | | Introduced drain explicitly because to do otherwise would have made life even harder. Everything addressed as per bug and IM. Test once for functions being exported and cache
| | * Implemented. Seems to work well. Changed the design and behaviour of the ↵Matthew Sackman2009-07-292-68/+140
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | backoff as discussed with Matthias over IM. Documented in comments, reproduced here: %% 5) init can return a 4th arg, {backoff, InitialTimeout, %% MinimumTimeout, DesiredHibernatePeriod} (all in %% milliseconds). Then, on all callbacks which can return a timeout %% (including init), timeout can be 'hibernate'. When this is the %% case, the current timeout value will be used (initially, the %% InitialTimeout supplied from init). After this timeout has %% occurred, handle_pre_hibernate/1 will be called. If that returns %% {hibernate, State} then the process will be hibernated. Upon %% awaking, a new current timeout value will be calculated, and then %% handle_post_hibernate/1 will be called. The purpose is that the %% gen_server2 takes care of adjusting the current timeout value such %% that the process will increase the timeout value repeatedly if it %% is unable to sleep for the DesiredHibernatePeriod. If it is able to %% sleep for the DesiredHibernatePeriod it will decrease the current %% timeout down to the MinimumTimeout, so that the process is put to %% sleep sooner (and hopefully for longer). In short, should a process %% using this receive a burst of messages, it should not hibernate %% between those messages, but as the messages become less frequent, %% the process will not only hibernate, it will do so sooner after %% each message. %% %% Normal timeout values (i.e. not 'hibernate') can still be used, and %% if they are used then the handle_info(timeout, State) will be %% called as normal. In this case, returning 'hibernate' from %% handle_info(timeout, State) will not hibernate the process %% immediately, as it would if backoff wasn't being used. Instead %% it'll wait for the current timeout as described above, before %% calling handle_pre_hibernate(State).
| | * cosmeticMatthias Radestock2009-07-241-8/+4
| | |
| | * don't include TimeoutState in status formattingMatthias Radestock2009-07-241-10/+3
| | | | | | | | | | | | | | | ordinary timeouts are not shown as part of the status, so it doesn't make sense to show the special ones. Also, the code was incorrect.
| | * remove R13B-1ismMatthias Radestock2009-07-241-4/+0
| | |
| | * *idiot*.Matthew Sackman2009-07-091-12/+11
| | |
| | * a) reverted the change to do_send which had come in when I updated ↵Matthew Sackman2009-07-061-7/+8
| | | | | | | | | | | | | | | | | | gen_server2 to R13B1 - this was a change originally made by matthias to ensure that messages cast to remote nodes are done so in order b) Add guards and slightly relax name/1 so that it works in R11B5. All tests pass in R11B5 and manual testing of the binary backoff hibernation shows that too works.
| | * All cosmetic (line length)Matthew Sackman2009-07-061-28/+49
| | |
| | * Pushed the binary exponential timeout / hibernate system into gen_server2. ↵Matthew Sackman2009-07-062-92/+117
| | | | | | | | | | | | Adjusted amqqueue_process to use it. Added documentation. Tested thoroughly with explicit test module (not added), and full test suite, which all passed. Existing tests further up in this bug similarly pass and demonstrate code is functioning correctly.
| | * updating gen_server2 with latest from R13B01 in order to ensure this doesn't ↵Matthew Sackman2009-07-063-28/+71
| | | | | | | | | | | | slip badly behind the shipped version.
| | * Done. In order to keep the code simple, the detection of naptime is done in ↵Matthew Sackman2009-07-021-6/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | reply and noreply functions. This means that the now() value there includes computation relating to the last message in. This is maybe not desirable, but the alternative is to wrap all of handle_cast, handle_call and handle_info. Nevertheless, testing shows this works: in the erlang client: Conn = amqp_connection:start("guest", "guest", "localhost"), Chan = lib_amqp:start_channel(Conn), [begin Q = list_to_binary(integer_to_list(R)), Q = lib_amqp:declare_queue(Chan, Q) end || R <- lists:seq(1,1000)], Props = (amqp_util:basic_properties()). [begin Q = list_to_binary(integer_to_list(R)), ok = lib_amqp:publish(Chan, <<"">>, Q, <<0:(8*1024)>>, Props) end || _ <- lists:seq(1,1500), R <- lists:seq(1,1000)]. Then, after that lot's gone in, in a shell do: watch -n 2 "time ./scripts/rabbitmqctl list_queues | tail" The times for me start off at about 2.3 seconds, then drop rapidly to 1.4 and then 0.2 seconds and stay there.
| * | Merged bug21202 into defaultDavid Wragg2009-08-077-19/+60
| |\ \
| | * \ Merged bug20602 into defaultBen Hood2009-08-063-4/+17
| | |\ \
| | | * | Bother, should have diffed before ci. I hate that ↵bug20602Matthew Sackman2009-08-061-0/+1
| | | | | | | | | | | | | | | | | | | | RABBITMQ_SERVER_START_ARGS= line being in the Makefile but it should be dealt with in a different bug.
| | | * | An evocative and inspiring bunny.Matthew Sackman2009-08-063-5/+17
| | | | |
| | * | | Merged bug21335 into defaultPaul Jones2009-08-061-6/+23
| | |\ \ \ | |_|/ / / |/| | | |
* | | | | Added a helper function to make dealing with the crazy content record a bit ↵Ben Hood2009-08-051-6/+23
| | | | | | | | | | | | | | | | | | | | more sane
| | * | | Merged bug21234 into defaultBen Hood2009-08-051-1/+0
| | |\ \ \ | | | |/ /
| | * | | Applied patch for enabling coverage with a specific directorybug21234Ben Hood2009-08-051-6/+20
| | |/ /
| | * | Merged 21046 into defaultBen Hood2009-08-051-2/+0
| | |\ \ | |_|/ / |/| | |
* | | | bug 20546. Just removing cruft which got missed in QAMatthew Sackman2009-08-051-2/+0
| | | |
| | * | Done. Testing the latency between the call to conserve_memory and when the ↵bug21046Matthew Sackman2009-08-041-1/+1
| |/ / |/| | | | | | | | | | | | | | msg gets processed shows this is benficial: In the erlang client, hammer in a few million messages, with no consumer. This causes the channel mailbox to get pretty big. Without the higher priority can demonstrate a delay of over a second before the conserve_message gets processed. With this, it's a mere fraction of that.
| * | 21202 => bug21202bug21202Matthew Sackman2009-08-050-0/+0
| | |
| * | change rpc timeout to infinity21202Matthew Sackman2009-08-051-1/+1
|/ /
* | Merged bug20539 into defaultBen Hood2009-08-038-16/+326
|\ \
| * \ merge bug21243 into defaultTony Garnock-Jones2009-07-271-5/+1
| |\ \
| | * \ merge bug21029 into defaultMatthias Radestock2009-07-241-2/+2
| | |\ \
| | * | | EPEL no longer need this PATH setting, so get rid of it.bug21029David Wragg2009-07-061-5/+1
| | | |/ | | |/| | | | | | | | | | | | | EPEL now includes the erlang-R12B-5.6 package, which has a /usr/bin/escript symlink.
| * | | Factored out ebin root from rabbitmq-server script (windows and unix)bug21243Paul Jones2009-07-272-7/+9
| | | |
| * | | Factored out RABBITMQ_EBINPaul Jones2009-07-241-2/+3
| | | |
| * | | Eliminated error macro; changed location of error printoutPaul Jones2009-07-241-5/+4
| | | |
| * | | Fixed handling of symlinks; compacted list comprehensionsPaul Jones2009-07-241-3/+12
| | | |
| * | | Fixed variable name - changed from UNPACKED to EXPAND for consistencyPaul Jones2009-07-241-2/+2
| | | |
| * | | cosmeticMatthias Radestock2009-07-241-128/+126
| | | |
| * | | Delete the plugin unpack directory before startingPaul Jones2009-07-231-2/+19
| | | |
| * | | Added Windows plugin management/support scriptsPaul Jones2009-07-232-2/+63
| | | |
| * | | Added more conditional diagnosticsPaul Jones2009-07-231-0/+8
| | | |
| * | | Reworked dependency expansion mechanism to not overexplore known ↵Paul Jones2009-07-231-22/+32
| | | | | | | | | | | | | | | | dependencies; eliminated crash-dump when an unknown dependency is encountered