| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | 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 - ↵ | 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 2013 | 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. | 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. | 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 confusion | Matthias Radestock | 2013-01-04 | 1 | -1/+1 |
| | | |/ | |||||
| | | * | Merge bug25353 | Simon MacMullen | 2012-12-12 | 1 | -18/+12 |
| | | |\ | |||||
| * | | | | tidy up | 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. | 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 |
| | | | |||||
| | * | application_controller:get_master/1 can return 'undefined'. | Simon MacMullen | 2012-12-10 | 1 | -4/+6 |
| |/ | |||||
| * | Added tag rabbitmq_v3_0_1 for changeset d538aa1bb716 | Simon MacMullen | 2012-12-07 | 0 | -0/+0 |
| | | |||||
| * | Remove spurious 3.0.1 changelogs. | Simon MacMullen | 2012-12-07 | 2 | -9/+0 |
| | | |||||
| * | Added tag rabbitmq_v3_0_1 for changeset 43f92e93c7d0 | Simon MacMullen | 2012-12-06 | 0 | -0/+0 |
| | | |||||
| * | Package changelogs for 3.0.1. | Simon MacMullen | 2012-12-06 | 2 | -0/+9 |
| | | |||||
| * | Merge bug25330 | Emile Joubert | 2012-12-05 | 3 | -3/+40 |
| |\ | |||||
| | * | Tweak the regex, align, and a test. | Simon MacMullen | 2012-12-05 | 2 | -2/+13 |
| | | | |||||
| | * | Special case the 3.0.0 version check. | Simon MacMullen | 2012-12-05 | 1 | -4/+11 |
| | | | |||||
| | * | Move the version check fun to misc, and anchor the regex. | Simon MacMullen | 2012-12-05 | 2 | -10/+13 |
| | | | |||||
| | * | Compare RabbitMQ versions ignoring the "patch" version (as semver.org calls ↵ | Simon MacMullen | 2012-12-03 | 1 | -6/+22 |
| | | | | | | | | | it). Not that we are full on semver, but close enough. | ||||
| * | | merge bug25341 into stable | Matthias Radestock | 2012-12-05 | 1 | -1/+9 |
| |\ \ | |||||
| | * | | Don't blow up if we end up talking to not-a-supervisor. | Simon MacMullen | 2012-12-05 | 1 | -1/+9 |
| | | | | |||||
| * | | | merge bug25340 into stable | Matthias Radestock | 2012-12-05 | 1 | -2/+8 |
| |\ \ \ | |/ / |/| | | |||||
| | * | | reduce wrongness | Matthias Radestock | 2012-12-04 | 1 | -2/+1 |
| | | | | |||||
| | * | | Send messages immediately if we are not busy. | Simon MacMullen | 2012-12-04 | 1 | -2/+9 |
| |/ / | |||||
| * | | Merge bug25335 | Simon MacMullen | 2012-12-04 | 1 | -1/+5 |
| |\ \ | |/ | |||||
| | * | merge bug25321 into stable | Tim Watson | 2012-12-03 | 0 | -0/+0 |
| | |\ | |||||
| | * \ | merge default | Tim Watson | 2012-12-03 | 5 | -38/+31 |
| | |\ \ | | |/ | |||||
