summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Allow subscribing to node down events from the node monitor.bug25472Simon MacMullen2013-03-011-5/+17
|
* Merged bug25432 into stableEmile Joubert2013-02-271-26/+10
|\
| * Remove concept of strictness, thus renaming list_strict/1 to ↵bug25432Simon MacMullen2013-02-261-26/+10
|/ | | | list_component/1 and removing list_strict/2 altogether, plus a few bits of therefore dead code.
* Merge bug25465Simon MacMullen2013-02-260-0/+0
|\
* | ignore early enotconn, and report early socket errors more nicelybug25465Matthias Radestock2013-02-251-10/+15
| |
* | continue accepting when client sends RST before we acceptedMatthias Radestock2013-02-251-7/+5
|/
* Merge bug25457Simon MacMullen2013-02-197-30/+20
|\
| * Merged bug25456 into stableEmile Joubert2013-02-191-1/+5
| |\
| | * Merged bug25453 into stableEmile Joubert2013-02-190-0/+0
| | |\
| | * | Take note of RABBITMQ_SERVICENAME, same as rabbitmq-service.bat does.bug25453Simon MacMullen2013-02-151-1/+5
| | |/
| * | Remove rabbit_runtime_parameter:validate_clear/3, and instead just validate ↵bug25456Simon MacMullen2013-02-185-27/+13
| | | | | | | | | | | | that the parameter exists.
| * | It's 'name', not 'key'.Simon MacMullen2013-02-151-2/+2
| |/
* | Ensure that we resume socket reading in all edge casesbug25457Matthias Radestock2013-02-181-48/+54
|/ | | | | | | | | | | | | | | | Specifically in all the cases where handle_other might have changed the connection_state. This is most straightforward and obvious to guarantee by always invoking recvloop after handle_other, unless we are stopping. This does expose an inconsistency in the various non-throw/exit termination cases: two of them were returning State, the other ok. Let's go with the latter; it's easiest. We also take the opportunity to eliminate 'Deb' from the handle_other signature. This is only needed in the {system, ...} message case, which we now handle specially.
* merge bug25419 into stableMatthias Radestock2013-02-140-0/+0
|\
* | 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
| |\