summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Treat {inconsistent_database, running_partitioned_network, Node} as being ↵bug25486Simon MacMullen2013-03-121-2/+11
| | | | sort of like {node_up, Node, NodeType}. It's not perfect, but it's the best we're going to get.
* Oops. This was part of an (early, wrong) attempt at bug 25474 which got ↵Simon MacMullen2013-03-121-4/+3
| | | | committed as part of f1317bb80df9 (bug 25358) by mistake. Remove.
* Merge bug 25384Simon MacMullen2013-03-112-4/+49
|\
| * OopsSimon MacMullen2013-03-071-2/+3
| |
| * Register the process name to make sure we only have one running at a time.bug25358Simon MacMullen2013-03-061-0/+3
| |
| * Unused variableSimon MacMullen2013-03-061-1/+1
| |
| * We don't need this - net_adm:ping/1 will not return pong for nodes that have ↵Simon MacMullen2013-03-051-4/+4
| | | | | | | | gone down before net_ticktime expires (it will hang for until then instead).
| * Merge in default (umm, again)Simon MacMullen2013-03-051-5/+17
| |\
| * \ Merge defaultSimon MacMullen2013-03-052-1/+42
| |\ \
| | * | Rename this thing, to make space for bug 25471Simon MacMullen2013-03-011-6/+12
| | | |
| | * | We no longer need two different death detectors since we no longer look at ↵Simon MacMullen2013-02-271-10/+1
| | | | | | | | | | | | | | | | Mnesia for majorityness.
| | * | SimplifySimon MacMullen2013-02-271-3/+1
| | | |
| | * | Base the whole thing off net_adm:ping/1 - because we might see other nodes ↵Simon MacMullen2013-02-272-11/+10
| | | | | | | | | | | | | | | | come back but also be waiting (in the no-majority case, and RAM nodes). Better to detect they exist and come back than to stay stuck because they don't happen to be running Mnesia.
| | * | Filter out all those events that look like:Simon MacMullen2013-02-271-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | =INFO REPORT==== 27-Feb-2013::14:17:46 === application: mnesia exited: stopped type: temporary since they are not very interesting and this bug makes them appear to a highly verbose extent.
| | * | When we lose majority, stop the applications and wait for the cluster to ↵Simon MacMullen2013-02-271-4/+17
| | | | | | | | | | | | | | | | come back.
| | * | cluster_cp_modeSimon MacMullen2013-02-182-0/+32
| | | |
* | | | Eliminate a foldlSimon MacMullen2013-03-111-3/+2
| | | |
* | | | CosmeticSimon MacMullen2013-03-111-2/+2
| | | |
* | | | Minimise routing exchange decorator APIEmile Joubert2013-03-112-23/+19
| | | |
* | | | Mostly callback descriptionEmile Joubert2013-03-082-8/+11
| | | |
* | | | OptimisationEmile Joubert2013-03-071-5/+10
| | | |
* | | | Permit exchange decorators to modify routing decisionsEmile Joubert2013-03-063-17/+39
| |_|/ |/| |
* | | Merged stable into defaultEmile Joubert2013-03-0544-1555/+2422
|\ \ \ | |/ /
| * | Merged bug25463 into defaultEmile Joubert2013-02-271-8/+5
| |\ \
| | * | Keep name around for logging / info item.bug25463Simon MacMullen2013-02-251-8/+5
| | | |
| * | | Merged stable into defaultEmile Joubert2013-02-2744-1551/+2421
| |\ \ \
| | * | | move socket buffer tuning into tcp_acceptorbug25467Matthias Radestock2013-02-263-12/+21
| | | | |
| | * | | stable to defaultSimon MacMullen2013-02-2642-1539/+2400
| | |\ \ \ | | | |/ /
| | | * | simplify queue's basic_consume handlerMatthias Radestock2013-02-211-12/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | backported from bug23749 branch - the call to update_ch_record in the is_ch_blocked(C1) == false branch was superfluos since the preceding update_consumer_count calls update_ch_record - all the checking whether the channel is blocked, and associated branching was just an optimisation. And not a particularly important one, since a) the "a new consumer comes along while its channel is blocked" case is hardly on the critical path, and b) exactly the same check is performed as part of run_message_queue (in deliver_msg_to_consumer/3). So get rid of it.
| | | * | oopsMatthias Radestock2013-02-201-1/+1
| | | | |
| | | * | introduce is_empty(State) helper in rabbit_amqqueue_processMatthias Radestock2013-02-201-11/+10
| | | | | | | | | | | | | | | | | | | | ported from bug 23749
| | | * | cosmeticMatthias Radestock2013-02-201-2/+2
| | | | |
| | | * | Remove spurious blank line in the logs.Simon MacMullen2013-02-201-1/+1
| | | | |
| | | * | merge bug25418 into defaultTim Watson2013-02-201-3/+24
| | | |\ \
| | | | * | Auto sync when policy changes to require it, in case we are already mirrored ↵bug25418Simon MacMullen2013-02-131-7/+11
| | | | | | | | | | | | | | | | | | | | | | | | but have unsynced slaves at that point.
| | | | * | First pass at ha-sync-mode.Simon MacMullen2013-02-111-4/+21
| | | | | |
| | | * | | stable to defaultSimon MacMullen2013-02-197-77/+69
| | | |\ \ \ | | | | |_|/ | | | |/| |
| | | * | | explain a reader subletyMatthias Radestock2013-02-151-1/+3
| | | | | |
| | | * | | refactor: more symmetry in rabbit_reader:handle_dependent_exit/3Matthias Radestock2013-02-151-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It makes no difference whether we call handle_exception before or after control_throttle, so lets use an order that more clearly calls out the similarity to the controlled exit case.
| | | * | | make reader's handling of channel.close_ok more obviously correctMatthias Radestock2013-02-151-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | by re-introducing a call to control_throttle. This was present in 3.0.x, and is needed there, but is actually not needed here, due to other changes made in the area. But the reason is quite subtle... For control_throttle to do something here, the channel_cleanup would have to be called for a channel for which we have run out of credit. Now, credit is only consumed when sending content-bearing methods to the channel with rabbit_channel:do_flow. There is a subsequent invocation of control_throttle in the code which will set the connection_state to 'blocking'. But this is immediately followed by a call to post_process_frame. The frame we are looking at must be the last frame of a content-bearing method, since otherwise the method would not be complete and we wouldn't have passed it to the channel. Hence that frame can only be a content_header or, more likely, a content_body. For both of these, post_process_frame invokes maybe_block, which will turn a 'blocking' into 'blocked'. And from that point onwards we will no longer read anything from the socket or process anything already in buf. So we certainly can't be processing a channel.close_ok. In other words, post_process_frame can only be invoked with a channel.close_ok frame when the connection_state is 'running', or blocking/blocked for a reason other than having run out of credit for a channel, i.e. an alarm. Therefore forgetting about the channel as part of the channel_cleanup call does not have an effect on credit_flow:blocked(). And hence an invocation of control_throttle will not alter the connection_state and is therefore unnecessary.
| | | * | | make reader's handle_dependent_exit clearerMatthias Radestock2013-02-151-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - handle the no-op case (controlled exit of a channel we've forgotten about already) explicitly - better clause order and formatting.
| | | * | | TypoSimon MacMullen2013-02-151-1/+1
| | | | | |
| | | * | | Merged bug25247Emile Joubert2013-02-155-37/+60
| | | |\ \ \
| | | | * | | tweakMatthias Radestock2013-02-151-9/+8
| | | | | | |
| | | | * | | explainMatthias Radestock2013-02-151-0/+10
| | | | | | |
| | | | * | | merge stable into defaultMatthias Radestock2013-02-1441-1462/+2274
| | | | |\ \ \
| | | | | * \ \ merge headsMatthias Radestock2013-02-141-13/+22
| | | | | |\ \ \
| | | | | | * | | drop_expired_msgs only when the queue head changesbug25451Matthias Radestock2013-02-131-11/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | And on recover. And when the timer goes off. That's all we need. new call sites: - in deliver_or_enqueue/3, when enqueuing a message (that we couldn't deliver to a consumer straight away) with an expiry to the head. the queue. NB: Previously we were always (re)setting a timer when enqueuing a message with an expiry, which is wasteful when the new message isn't at the head (i.e. the queue was non-empty) or when it needs expiring immediately. - requeue_and_run/2, since a message may get requeued to the head. This call site arises due to removal of the run_message_queue/1 call site (see below). unchanged call sites: - init_ttl/2 - this is the recovery case - fetch/2, after fetching - this is the basic "queue head changes" case - handle_info/drop_expired - this is the message expiry timer removed call sites: - run_message_queue/1 - this internally calls fetch/2 (see above) but also invoking drop_expired_msgs at the beginning. This now happens at the call sites, where it is necessary. Which actually only is in requeue_and_run, and not the others, none of which change the queue content prior to calling run_message_queue/1 - possibly_unblock/3 - unblocking of consumers - handle_call/basic_consumer - adding a consumer - handle_call/basic_get, prior to the call to fetch/2. - handle_call/stat
| | | | | | * | | don't invoke run_message_queue in handle_cast/run_backing_queueMatthias Radestock2013-02-131-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since that would only be necessary of the BQ:invoke modified the consumers, which it can't, or added messages to the queue, which it shouldn't.
| | | | | * | | | remove superfluous vqstate fieldMatthias Radestock2013-02-142-11/+3
| | | | | |/ / /