summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Missing specbug24558Simon MacMullen2012-02-291-0/+1
|
* Assert in timeout, better sync comment, changed naming of needs_index_sync.Francesco Mazzoli2012-02-292-6/+6
|
* Checking for memory usage in needs_timeoutFrancesco Mazzoli2012-02-221-4/+12
|
* Using SYNC_INTERVAL for the idle timeout as well.Francesco Mazzoli2012-02-221-4/+3
|
* Removed reduce_memory_use test before actual reduce_memory_use in timeout/1.Francesco Mazzoli2012-02-221-8/+1
|
* Removed sync_if/2 and sync/2.Francesco Mazzoli2012-02-221-22/+7
|
* Merge defaultFrancesco Mazzoli2012-02-164-29/+40
|\
| * Introduced a small timeout when needs_timeout returns 'idle'.Francesco Mazzoli2012-02-162-4/+5
| | | | | | | | | | | | This makes this branch as performant as default, while performing syncs. I have to make sure that we don't rely on the timeout being 0.
| * Got rid of unused function and warnings.Francesco Mazzoli2012-02-091-10/+3
| |
| * Merged defaultFrancesco Mazzoli2012-02-09129-472/+691
| |\
| * | Changed needs_sync/1 patterns order.Francesco Mazzoli2012-02-091-3/+2
| | |
| * | Taking is_dirty into account in needs_sync/1.Francesco Mazzoli2012-02-091-2/+3
| | |
| * | needs_sync/1 now uses the handle write buffer, sync/1 is unconditional.Francesco Mazzoli2012-02-092-7/+16
| | | | | | | | | | | | | | | | | | If we perform the sync unconditionally and not only when unsynced_msg_ids is empty the write_buffer will always be cleared and we won't be stuck in a loop.
| * | Syncing instead of flushing.Francesco Mazzoli2012-02-092-12/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This stops needs_timeout and timeout from going in a loop. However, since rabbit_queue_index:needs_sync works looking at unsynced_msg_ids, this doesn't preserving acks when the broker is terminated abruptedly, since the timeout won't be triggered (needs_sync will return false). If needs_sync is defined inspecting the write_buffer if the file_handle_cache, needs_timeout and timeout go in a loop, for reason that are not clear to me now.
| * | Returning idle in needs_timeout/1 only when there is something to flush.Francesco Mazzoli2012-02-072-5/+11
| | |
| * | Always returning either timed or idle, always flushing in timeout/1.Francesco Mazzoli2012-02-073-56/+12
| | |
| * | Flushing periodically, trying out various way to find out when to flush.Francesco Mazzoli2012-02-073-13/+63
| | |
* | | Merge bug24086Simon MacMullen2012-02-156-36/+55
|\ \ \
| * | | refactor: less strange variable scopingMatthias Radestock2012-02-141-7/+8
| | | |
| * | | Remerge bug24714Emile Joubert2012-02-152-13/+8
| |\ \ \
| | * | | Unmerge bug20337Emile Joubert2012-02-151-1/+1
| | | | |
| | * | | simplifying refactorMatthias Radestock2012-02-131-12/+7
| | | | |
| * | | | monitor nodes just oncebug24714Matthias Radestock2012-02-091-9/+12
| |/ / /
| * | | remove cruftMatthias Radestock2012-02-091-1/+1
| | |/ | |/|
| * | Merge bug24668 (make consumer flow control more like credit_flow; improve ↵Simon MacMullen2012-02-093-6/+26
| |\ \ | | | | | | | | | | | | performance along the way)
| | * | Cosmeticbug24668Simon MacMullen2012-02-091-1/+1
| | | |
| | * | credit_flow-like throttling of queue->writer message flowMatthias Radestock2012-02-073-6/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously we effectively had a credit_spec of {100,1}, i.e. the queue would send up to 100 messages to a consumer channel/writer, and the writer would 'ack' them individually. That is horrendeously inefficient: - when draining a queue, after the queue had sent 100 messages it would block the consumer, unblock when the notify_sent 'ack' came in, send another message to the channel/queue, block again. So a vast amount of work per message - in a cluster, the notify_sent 'acks' effectively doubled the cross-cluster traffic We now use a scheme much like credit_flow. Except we cannot *actually* use credit_flow because - rather than wanting to know whether a sender is lacking credit for *any* receiver, as indicated by credit_flow:blocked(), we need to know *which* receiver we are lacking credit for. - (lack of) credit from receiver should *not* propagate to senders, i.e. sender and receiver credits are completely decoupled. Instead the queue should, er, queue messages when receivers cannot keep up. While we could modify credit_flow to accomodate the above, the changes would be quite unpleasant and not actually reduce the amount of code vs implementing a more specialised scheme. The downside is that the contract for using rabbit_amqqueue:notify_sent becomes somewhat mysterious. In particular it sets up a monitor for queues in the caller, and expects the caller to invoke rabbit_amqqueue:notify_sent_queue_down when a 'DOWN' message is received.
* | | | handle framing errors promptlybug24086Matthias Radestock2012-02-091-10/+10
|/ / /
* | | refactor channel frame handlingMatthias Radestock2012-02-091-24/+21
| | | | | | | | | | | | | | | | | | | | | ...so there is just one process_channel_frame call site. Also, ensure control_throttle isn't called twice, which would happen when processing a 'channel.close_ok' frame. No harm in it, really, but unnecessary.
* | | Merged bug24505 into defaultEmile Joubert2012-02-083-103/+117
|\ \ \
| * \ \ Merge bug24234Simon MacMullen2012-02-081-11/+32
| |\ \ \
| | * | | Committed some changes by mistake...bug24234Francesco Mazzoli2012-02-013-32/+13
| | | | |
| | * | | Cosmetic, restored reject/4 arguments to the previous order.Francesco Mazzoli2012-02-014-20/+40
| | | | |
| | * | | Merge default.Francesco Mazzoli2012-02-011-12/+32
| | |\ \ \
| | | * \ \ Merge default.Francesco Mazzoli2012-01-3118-257/+445
| | | |\ \ \
| | | * | | | Renamede reject_tx/4 to reject/4.Francesco Mazzoli2012-01-311-4/+4
| | | | | | |
| | | * | | | Delete extra whitespace.Francesco Mazzoli2012-01-251-2/+0
| | | | | | |
| | | * | | | Cons instead of append, reject does not change the channel state.Francesco Mazzoli2012-01-251-6/+5
| | | | | | |
| | | * | | | 'case' statement styleFrancesco Mazzoli2012-01-251-2/+3
| | | | | | |
| | | * | | | reject doesn't need to know about the channel state.Francesco Mazzoli2012-01-251-5/+6
| | | | | | |
| | | * | | | Fix to reject_tx, list comprehension instead of map.Francesco Mazzoli2012-01-251-2/+3
| | | | | | |
| | | * | | | Flatten the list of lists.Francesco Mazzoli2012-01-251-1/+1
| | | | | | |
| | | * | | | Executing basick.{nack,reject} transactionally.Francesco Mazzoli2012-01-241-15/+36
| | | | | | |
| * | | | | | Merge bug24730Simon MacMullen2012-02-082-83/+67
| |\ \ \ \ \ \
| | * | | | | | refactor: remove cruftMatthias Radestock2012-02-081-31/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The equivalence proof is left as an exercise to the reader.
| | * | | | | | refactor: extract commonality between basic.deliver and basic.getMatthias Radestock2012-02-071-52/+43
| | | |_|_|/ / | | |/| | | | | | | | | | | | | | | | | | | | | | | | | ...and move the writer communication as early as possible, which improves latency.
| * | | | | | Don't sync the mnesia disk log when nothing got written to itbug24730Matthias Radestock2012-02-061-8/+17
| |/ / / / / | | | | | | | | | | | | | | | | | | This is imperfect but safe.
* | | | | | cosmetic: drop redundant /integer in binary matchbug24505Matthias Radestock2012-02-081-27/+27
| | | | | | | | | | | | | | | | | | | | | | | | plus re-indent comments
* | | | | | Merged default.Francesco Mazzoli2012-02-076-34/+79
|\ \ \ \ \ \ | |/ / / / / |/| | | | |
| * | | | | Using gen_secure/0 only when really needed.Francesco Mazzoli2012-02-073-11/+11
| | | | | |