Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | cosmeticbug25419 | Matthias Radestock | 2013-02-14 | 1 | -2/+2 |
| | |||||
* | In case the containing process is trapping exits. | Simon MacMullen | 2013-02-14 | 1 | -0/+1 |
| | |||||
* | Don't stomp on the (possible) registered name of the thing that invokes ↵ | Simon MacMullen | 2013-02-14 | 1 | -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 MacMullen | 2013-02-14 | 1 | -0/+8 |
| | | | | stopping. | ||||
* | Merge bug25448 | Simon MacMullen | 2013-02-13 | 0 | -0/+0 |
|\ | |||||
* | | drop expired messages post basic_getbug25448 | Matthias Radestock | 2013-02-12 | 1 | -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 stable | Emile Joubert | 2013-02-08 | 0 | -0/+0 |
|\ | |||||
* | | Only delete queues for which no HA policy exists.bug25443 | Simon MacMullen | 2013-02-06 | 1 | -2/+4 |
| | | |||||
* | | Remove durable queues based on a node while forgetting that node. | Simon MacMullen | 2013-02-06 | 2 | -1/+19 |
|/ | |||||
* | Merged bug25435 into stable | Emile Joubert | 2013-02-05 | 1 | -1/+1 |
|\ | |||||
| * | We depend on xmerl via mochijson2.bug25435 | Simon MacMullen | 2013-02-04 | 1 | -1/+1 |
|/ | |||||
* | Added tag rabbitmq_v3_0_2 for changeset bf11b947abb9 | Simon MacMullen | 2013-01-31 | 0 | -0/+0 |
| | |||||
* | Merge bug25420rabbitmq_v3_0_2 | Simon MacMullen | 2013-01-29 | 1 | -1/+2 |
|\ | |||||
| * | Merge bug25422 | Simon MacMullen | 2013-01-28 | 1 | -1/+2 |
| |\ | |||||
| | * | ignore 'invoke' on different modulebug25422 | Matthias Radestock | 2013-01-28 | 1 | -1/+2 |
| |/ | | | | | | | rather than exploding. | ||||
* | | handle all returns of mnesia:system_info(is_running)bug25420 | Matthias Radestock | 2013-01-28 | 1 | -23/+25 |
|/ | |||||
* | remove unused function | Matthias Radestock | 2013-01-28 | 1 | -6/+1 |
| | |||||
* | eliminate superfluous double call | Matthias Radestock | 2013-01-28 | 1 | -1/+1 |
| | |||||
* | merge bug25412 into stable | Matthias Radestock | 2013-01-24 | 1 | -2/+4 |
|\ | |||||
| * | Don't just {reply, Cmd, State} since that will end up going into send/2 - ↵bug25412 | Simon MacMullen | 2013-01-24 | 1 | -2/+4 |
| | | | | | | | | which will decide not to send... | ||||
* | | Merge bug25343 | Simon MacMullen | 2013-01-24 | 142 | -145/+145 |
|\ \ | |||||
| * | | Update copyright 2013bug25343 | Emile Joubert | 2013-01-23 | 142 | -145/+145 |
| | | | |||||
* | | | Merge bug25412 | Simon MacMullen | 2013-01-24 | 0 | -0/+0 |
|\ \ \ | |/ / | | / | |/ |/| | |||||
* | | prevent channel from sending anything after close/close_ok | Matthias Radestock | 2013-01-22 | 1 | -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 stable | Matthias Radestock | 2013-01-22 | 1 | -10/+8 |
|\ | |||||
| * | one test writer is quite enough. and make it work.bug25360 | Matthias Radestock | 2013-01-22 | 1 | -10/+8 |
| | | |||||
* | | merge bug25360 into stable | Matthias Radestock | 2013-01-22 | 1 | -1/+8 |
|\ \ | |/ | |||||
| * | our test writer needs to do a bit more now | Matthias Radestock | 2013-01-22 | 1 | -1/+8 |
| | | |||||
* | | Merge bug 25360 | Simon MacMullen | 2013-01-21 | 0 | -0/+0 |
|\ \ | |/ |/| | |||||
* | | get the channel to flush the writer | Matthias Radestock | 2013-01-21 | 2 | -8/+19 |
|/ | | | | when the former is asked to terminate by the reader | ||||
* | Backed out changeset 0ca8cbef9720 | Matthias Radestock | 2013-01-21 | 2 | -19/+8 |
| | | | | accidentally committed on 'stable' instead of bug25360 branch | ||||
* | get th channel to flush the writer | Matthias Radestock | 2013-01-21 | 2 | -8/+19 |
| | | | | when the former is asked to terminate by the reader | ||||
* | Merge bug25401 | Simon MacMullen | 2013-01-16 | 0 | -0/+0 |
|\ | |||||
* | | Prevent explosion if someone passes a list.bug25401 | Simon MacMullen | 2013-01-16 | 1 | -4/+9 |
|/ | |||||
* | merge bug25353 into stable | Matthias Radestock | 2013-01-08 | 1 | -1/+1 |
|\ | |||||
| * | merge bug25353 into stable | Matthias Radestock | 2013-01-08 | 1 | -1/+1 |
| |\ | |||||
| | * | merge bug25378 into stable | Matthias Radestock | 2013-01-04 | 1 | -1/+1 |
| | |\ | |||||
| | | * | correct and/or confusionbug25378 | Matthias Radestock | 2013-01-04 | 1 | -1/+1 |
| | |/ | |||||
| | * | Merge bug25353 | Simon MacMullen | 2012-12-12 | 1 | -18/+12 |
| | |\ | |||||
* | | | | tidy upbug25353 | Matthias Radestock | 2013-01-08 | 1 | -4/+0 |
|/ / / | |||||
* | | | copy change from rabbit_amqqueue_process to slave | Matthias Radestock | 2013-01-08 | 1 | -7/+9 |
| |/ |/| | | | | | for consistency | ||||
* | | Reminder | Simon MacMullen | 2012-12-12 | 1 | -0/+2 |
| | | |||||
* | | make sure the stats and rate timers don't keep each other alive | Matthias Radestock | 2012-12-11 | 1 | -18/+10 |
|/ | |||||
* | Merge heads | Simon MacMullen | 2012-12-11 | 2 | -0/+9 |
|\ | |||||
| * | Changelogs for 3.0.1. | Simon MacMullen | 2012-12-11 | 2 | -0/+9 |
| | | |||||
* | | Added tag rabbitmq_v3_0_1 for changeset 91df77f12b7f | Simon MacMullen | 2012-12-10 | 0 | -0/+0 |
|/ | |||||
* | Removed tag rabbitmq_v3_0_1rabbitmq_v3_0_1 | Simon MacMullen | 2012-12-10 | 0 | -0/+0 |
| | |||||
* | merge bug25351 into stable | Matthias Radestock | 2012-12-10 | 1 | -4/+7 |
|\ | |||||
| * | Those catches do no really do anything.bug25351 | Simon MacMullen | 2012-12-10 | 1 | -2/+2 |
| | | |||||
| * | Call application_master:get_child/1 more like OTP does. | Simon MacMullen | 2012-12-10 | 1 | -2/+3 |
| | |