summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* cosmeticbug25419Matthias Radestock2013-02-141-2/+2
|
* In case the containing process is trapping exits.Simon MacMullen2013-02-141-0/+1
|
* Don't stomp on the (possible) registered name of the thing that invokes ↵Simon MacMullen2013-02-141-4/+3
| | | | boot/0 or start/0, create a new process to hold the name instead.
* If we try to stop while starting, wait until we have stopped starting before ↵Simon MacMullen2013-02-141-0/+8
| | | | stopping.
* Merge bug25448Simon MacMullen2013-02-130-0/+0
|\
* | drop expired messages post basic_getbug25448Matthias Radestock2013-02-121-5/+4
|/ | | | | | | | | | | | | | | | | | | | ...so messages with an expiry that are at the head of the queue after a basic.get do not get stuck there in the absence of other queue activity. Rather than simply adding a call to drop_expired_messages/1 after the call to fetch/1 in the basic_get code, we insert the call into fetch/1, which allows us to remove it from the other call site. Thus fetch/1 preserves the invariant we are after, namely that whenever a queue has a message at the head with an expiry, there is a timer set to drop said message. Note that the message count returned by basic.get does not reflect the dropping of expired messages after the fetched message. That's ok since we make no guarantee that messages are expired straight away. And note that on 'default' (rather than 'stable') the behaviour is actually different; due to various other changes there we will in fact return the reduced count.
* Merged bug25443 into stableEmile Joubert2013-02-080-0/+0
|\
* | Only delete queues for which no HA policy exists.bug25443Simon MacMullen2013-02-061-2/+4
| |
* | Remove durable queues based on a node while forgetting that node.Simon MacMullen2013-02-062-1/+19
|/
* Merged bug25435 into stableEmile Joubert2013-02-051-1/+1
|\
| * We depend on xmerl via mochijson2.bug25435Simon MacMullen2013-02-041-1/+1
|/
* Added tag rabbitmq_v3_0_2 for changeset bf11b947abb9Simon MacMullen2013-01-310-0/+0
|
* Merge bug25420rabbitmq_v3_0_2Simon MacMullen2013-01-291-1/+2
|\
| * Merge bug25422Simon MacMullen2013-01-281-1/+2
| |\
| | * ignore 'invoke' on different modulebug25422Matthias Radestock2013-01-281-1/+2
| |/ | | | | | | rather than exploding.
* | handle all returns of mnesia:system_info(is_running)bug25420Matthias Radestock2013-01-281-23/+25
|/
* remove unused functionMatthias Radestock2013-01-281-6/+1
|
* eliminate superfluous double callMatthias Radestock2013-01-281-1/+1
|
* merge bug25412 into stableMatthias Radestock2013-01-241-2/+4
|\
| * Don't just {reply, Cmd, State} since that will end up going into send/2 - ↵bug25412Simon MacMullen2013-01-241-2/+4
| | | | | | | | which will decide not to send...
* | Merge bug25343Simon MacMullen2013-01-24142-145/+145
|\ \
| * | Update copyright 2013bug25343Emile Joubert2013-01-23142-145/+145
| | |
* | | Merge bug25412Simon MacMullen2013-01-240-0/+0
|\ \ \ | |/ / | | / | |/ |/|
* | prevent channel from sending anything after close/close_okMatthias Radestock2013-01-221-34/+37
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The "we have sent a close/close_ok" state is indicated by state=closing. Well, not quite... The channel gets into the 'closing' state via notify_queues. That is called in three places: - 'terminate' - uninteresting since we don't send/do anything after that anyway - handle_exception when encountering a channel level error, i.e. when we send a channel.close - when receiving a 'channel.close'. Note that this isn't quite the same as sending a channel.close_ok. That in fact happens later, after a handshake with the reader. But for our purposes it's good enough. Certainly logically it is perfectly ok for us to stop sending things to the client once we have *seen* a 'close'. So how do we prevent sending in the 'closing' state? Firstly, we introduce a 'send' helper that replaces all rabbit_writer:send_command/2 invocations and is a no-op when state=closing. There is one notable exception - the sending of 'channel.close', which happens when state has already been set to 'closing'. rabbit_writer:send_command/2 isn't the only way to send commands to the writer though. The channel uses a few others: - send_command_sync - this is used to send channel.close_ok. We are in fact in the 'closing' state at that point and nevertheless must send that command (this is the tail end of the aforementioned handshake). So it's fine to leave this invocation as is. - send_command_and_notify - this is used to send messages with basic.deliver. We make that entire code a no-op in the no-op case, i.e. any messages sent by queues to the channel while it is 'closing' are simply dropped on the floor. This is TRTTD since it results in a minimum amount of work and is perfectly safe - no different to the channel terminating while those messages were in flight. - send_command/3 - this is used to send a basic.get_ok. That entire code - part of handle_method - is already guarded by a 'closing' state check that no-ops. It is also used to send basic.returns, which only happens in handling a basic.publish, which in turn is subject to the same handle_method guard. Finally, we add some optimisations to the 'confirm' and 'tx' code, so that all the logic for aggregating confirms and sending acks/nacks (or tx.commit / tx.commit failures) gets skipped when closing.
* merge bug25360 into stableMatthias Radestock2013-01-221-10/+8
|\
| * one test writer is quite enough. and make it work.bug25360Matthias Radestock2013-01-221-10/+8
| |
* | merge bug25360 into stableMatthias Radestock2013-01-221-1/+8
|\ \ | |/
| * our test writer needs to do a bit more nowMatthias Radestock2013-01-221-1/+8
| |
* | Merge bug 25360Simon MacMullen2013-01-210-0/+0
|\ \ | |/ |/|
* | get the channel to flush the writerMatthias Radestock2013-01-212-8/+19
|/ | | | when the former is asked to terminate by the reader
* Backed out changeset 0ca8cbef9720Matthias Radestock2013-01-212-19/+8
| | | | accidentally committed on 'stable' instead of bug25360 branch
* get th channel to flush the writerMatthias Radestock2013-01-212-8/+19
| | | | when the former is asked to terminate by the reader
* Merge bug25401Simon MacMullen2013-01-160-0/+0
|\
* | Prevent explosion if someone passes a list.bug25401Simon MacMullen2013-01-161-4/+9
|/
* merge bug25353 into stableMatthias Radestock2013-01-081-1/+1
|\
| * merge bug25353 into stableMatthias Radestock2013-01-081-1/+1
| |\
| | * merge bug25378 into stableMatthias Radestock2013-01-041-1/+1
| | |\
| | | * correct and/or confusionbug25378Matthias Radestock2013-01-041-1/+1
| | |/
| | * Merge bug25353Simon MacMullen2012-12-121-18/+12
| | |\
* | | | tidy upbug25353Matthias Radestock2013-01-081-4/+0
|/ / /
* | | copy change from rabbit_amqqueue_process to slaveMatthias Radestock2013-01-081-7/+9
| |/ |/| | | | | for consistency
* | ReminderSimon MacMullen2012-12-121-0/+2
| |
* | make sure the stats and rate timers don't keep each other aliveMatthias Radestock2012-12-111-18/+10
|/
* Merge headsSimon MacMullen2012-12-112-0/+9
|\
| * Changelogs for 3.0.1.Simon MacMullen2012-12-112-0/+9
| |
* | Added tag rabbitmq_v3_0_1 for changeset 91df77f12b7fSimon MacMullen2012-12-100-0/+0
|/
* Removed tag rabbitmq_v3_0_1rabbitmq_v3_0_1Simon MacMullen2012-12-100-0/+0
|
* merge bug25351 into stableMatthias Radestock2012-12-101-4/+7
|\
| * Those catches do no really do anything.bug25351Simon MacMullen2012-12-101-2/+2
| |
| * Call application_master:get_child/1 more like OTP does.Simon MacMullen2012-12-101-2/+3
| |