summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* merge bug25412 into stableMatthias Radestock2013-01-241-2/+4
|\
| * Don't just {reply, Cmd, State} since that will end up going into send/2 - ↵Simon MacMullen2013-01-241-2/+4
| | | | | | | | which will decide not to send...
* | Merge bug25343Simon MacMullen2013-01-24142-145/+145
|\ \
| * | Update copyright 2013Emile 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.Matthias 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.Simon 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 confusionMatthias Radestock2013-01-041-1/+1
| | |/
| | * Merge bug25353Simon MacMullen2012-12-121-18/+12
| | |\
* | | | tidy upMatthias 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.Simon MacMullen2012-12-101-2/+2
| |
| * Call application_master:get_child/1 more like OTP does.Simon MacMullen2012-12-101-2/+3
| |
| * application_controller:get_master/1 can return 'undefined'.Simon MacMullen2012-12-101-4/+6
|/
* Added tag rabbitmq_v3_0_1 for changeset d538aa1bb716Simon MacMullen2012-12-070-0/+0
|
* Remove spurious 3.0.1 changelogs.Simon MacMullen2012-12-072-9/+0
|
* Added tag rabbitmq_v3_0_1 for changeset 43f92e93c7d0Simon MacMullen2012-12-060-0/+0
|
* Package changelogs for 3.0.1.Simon MacMullen2012-12-062-0/+9
|
* Merge bug25330Emile Joubert2012-12-053-3/+40
|\
| * Tweak the regex, align, and a test.Simon MacMullen2012-12-052-2/+13
| |
| * Special case the 3.0.0 version check.Simon MacMullen2012-12-051-4/+11
| |
| * Move the version check fun to misc, and anchor the regex.Simon MacMullen2012-12-052-10/+13
| |
| * Compare RabbitMQ versions ignoring the "patch" version (as semver.org calls ↵Simon MacMullen2012-12-031-6/+22
| | | | | | | | it). Not that we are full on semver, but close enough.
* | merge bug25341 into stableMatthias Radestock2012-12-051-1/+9
|\ \
| * | Don't blow up if we end up talking to not-a-supervisor.Simon MacMullen2012-12-051-1/+9
| | |
* | | merge bug25340 into stableMatthias Radestock2012-12-051-2/+8
|\ \ \ | |/ / |/| |
| * | reduce wrongnessMatthias Radestock2012-12-041-2/+1
| | |
| * | Send messages immediately if we are not busy.Simon MacMullen2012-12-041-2/+9
|/ /
* | Merge bug25335Simon MacMullen2012-12-041-1/+5
|\ \ | |/
| * merge bug25321 into stableTim Watson2012-12-030-0/+0
| |\
| * \ merge defaultTim Watson2012-12-035-38/+31
| |\ \ | | |/