Alexandru Scvortov <alexandru@rabbitmq.com> [Wed, 01 Sep 2010 17:21:35 +0100] rev 4657
merge bug23107 into default
Marek Majkowski <marek@rabbitmq.com> [Wed, 01 Sep 2010 15:19:36 +0100] rev 4656
bug23185 merged into default
Simon MacMullen <simon@rabbitmq.com> [Wed, 01 Sep 2010 14:58:08 +0100] rev 4655
Merge bug23197 (missed heartbeat may not get logged)
Matthias Radestock <matthias@rabbitmq.com> [Wed, 01 Sep 2010 14:40:13 +0100] rev 4654
cosmetic
Matthias Radestock <matthias@rabbitmq.com> [Wed, 01 Sep 2010 14:39:32 +0100] rev 4653
simplifying refactor
Matthias Radestock <matthias@rabbitmq.com> [Wed, 01 Sep 2010 14:29:00 +0100] rev 4652
merge bug23215 into default
Vlad Alexandru Ionescu <vlad@rabbitmq.com> [Wed, 01 Sep 2010 12:07:08 +0100] rev 4651
fixing premature generalisation
Vlad Alexandru Ionescu <vlad@rabbitmq.com> [Wed, 01 Sep 2010 11:43:53 +0100] rev 4650
making gen:call label constant; separating calls handling
Vlad Alexandru Ionescu <vlad@rabbitmq.com> [Wed, 01 Sep 2010 10:46:27 +0100] rev 4649
fixing unreachable function clause
Emile Joubert <emile@rabbitmq.com> [Tue, 31 Aug 2010 17:53:04 +0100] rev 4648
Merged bug23181 into default
Alexandru Scvortov <alexandru@rabbitmq.com> [Tue, 31 Aug 2010 17:42:24 +0100] rev 4647
refactored code
Alexandru Scvortov <alexandru@rabbitmq.com> [Tue, 31 Aug 2010 17:14:05 +0100] rev 4646
shortened code a bit
Alexandru Scvortov <alexandru@rabbitmq.com> [Tue, 31 Aug 2010 16:44:45 +0100] rev 4645
in/3 -> in/2; drain/2 -> drain/1
Alexandru Scvortov <alexandru@rabbitmq.com> [Tue, 31 Aug 2010 13:58:24 +0100] rev 4644
client scope grants permission *only* for amq.gen resources
So, a client still need explicit permission to use amq.default, etc.
Simon MacMullen <simon@rabbitmq.com> [Tue, 31 Aug 2010 13:56:50 +0100] rev 4643
lists:member.
Simon MacMullen <simon@rabbitmq.com> [Tue, 31 Aug 2010 13:47:46 +0100] rev 4642
Allow byte, int, short, long.
Matthias Radestock <matthias@rabbitmq.com> [Tue, 31 Aug 2010 13:10:51 +0100] rev 4641
merge bug23184 into default
Simon MacMullen <simon@rabbitmq.com> [Tue, 31 Aug 2010 12:10:08 +0100] rev 4640
Change type of expires argument from (signed)long to signedint since that's the best we can do in 0-8.
Alexandru Scvortov <alexandru@rabbitmq.com> [Tue, 31 Aug 2010 11:56:22 +0100] rev 4639
pending acks are sent out when the channel becomes idle or every 1s
Alexandru Scvortov <alexandru@rabbitmq.com> [Tue, 31 Aug 2010 10:35:46 +0100] rev 4638
fixed message leak caused by confirms
I've added variable_queue:init/4. It calls variable_queue:init/3 and
the fourth parameter is a tuple of 3 functions: the function to call
when the indices of some guids hit the disk, the function to call when
some guids hit the disk and the function to call when some guids have
been ack'd by the consumer. Rabbit_test supplies nops rather than the
usual casts, so the superfluous messages aren't generated.
Matthias Radestock <matthias@rabbitmq.com> [Fri, 27 Aug 2010 19:11:47 +0100] rev 4637
better recursive delete
Alexandru Scvortov <alexandru@rabbitmq.com> [Fri, 27 Aug 2010 18:19:56 +0100] rev 4636
merge default into bug20284
The tests fail right now because queue_index sends out more messages
than expected.
Emile Joubert <emile@rabbitmq.com> [Fri, 27 Aug 2010 15:38:34 +0100] rev 4635
Merged bug23183 into junk
Simon MacMullen <simon@rabbitmq.com> [Fri, 27 Aug 2010 15:19:56 +0100] rev 4634
remove the mnesia dir check from rabbit:prepare()
Simon MacMullen <simon@rabbitmq.com> [Fri, 27 Aug 2010 15:16:47 +0100] rev 4633
Call rabbit:prepare just before starting rabbit.
Simon MacMullen <simon@rabbitmq.com> [Fri, 27 Aug 2010 15:16:10 +0100] rev 4632
Rework delete_dir to return error tuple.
Michael Bridgen <mikeb@rabbitmq.com> [Fri, 27 Aug 2010 15:04:50 +0100] rev 4631
Merge bug23109 (remove reader profiling dwead code)
Simon MacMullen <simon@rabbitmq.com> [Fri, 27 Aug 2010 14:33:39 +0100] rev 4630
Increase robustness when the scratch dir cannot be deleted / written.
Matthias Radestock <matthias@rabbitmq.com> [Fri, 27 Aug 2010 14:16:17 +0100] rev 4629
prevent normal heartbeater termination from tearing down the reader
David Wragg <david@rabbitmq.com> [Fri, 27 Aug 2010 14:13:50 +0100] rev 4628
All packaging makefiles can assume that "make srcdist" is already done
Simon MacMullen <simon@rabbitmq.com> [Fri, 27 Aug 2010 13:42:08 +0100] rev 4627
Merge bug23192 into default (errors in gen_server2 'terminate' callback mask termination reason)
Matthias Radestock <matthias@rabbitmq.com> [Fri, 27 Aug 2010 12:19:58 +0100] rev 4626
merge bug15930 into default
Michael Bridgen <mikeb@rabbitmq.com> [Fri, 27 Aug 2010 12:07:49 +0100] rev 4625
Merge bug23106 (remove rabbit_hooks)
Matthias Radestock <matthias@rabbitmq.com> [Thu, 26 Aug 2010 21:51:56 +0100] rev 4624
tweak
Matthias Radestock <matthias@rabbitmq.com> [Thu, 26 Aug 2010 21:31:49 +0100] rev 4623
report the root cause when 'terminate' callback fails
Vlad Alexandru Ionescu <vlad@rabbitmq.com> [Thu, 26 Aug 2010 19:12:36 +0100] rev 4622
minor cosmetic
Vlad Alexandru Ionescu <vlad@rabbitmq.com> [Thu, 26 Aug 2010 18:46:36 +0100] rev 4621
implementing topic routing with tries; adding better test for topic routing
Emile Joubert <emile@rabbitmq.com> [Thu, 26 Aug 2010 17:28:49 +0100] rev 4620
Merged bug23178 into default
Alexandru Scvortov <alexandru@rabbitmq.com> [Thu, 26 Aug 2010 13:36:58 +0100] rev 4619
move treating 'amq\.*' specially to inner case
The Permission argument to check_resource_access is not
a #permission{}. It is an atom naming which permission we want
(configure, read or write).
To treat 'amq.*' resources differently, the check needs to be moved to
the inner case.
David Wragg <david@rabbitmq.com> [Thu, 26 Aug 2010 11:40:37 +0100] rev 4618
Merge bug23141 into default
rabbitmq-multi should detect a bad NODENAME
Alexandru Scvortov <alexandru@rabbitmq.com> [Wed, 25 Aug 2010 21:15:41 +0100] rev 4617
removed underspecs warnings
Alexandru Scvortov <alexandru@rabbitmq.com> [Wed, 25 Aug 2010 21:11:28 +0100] rev 4616
solve a warning
Alexandru Scvortov <alexandru@rabbitmq.com> [Wed, 25 Aug 2010 18:57:55 +0100] rev 4615
delete_now -> delete
Emile Joubert <emile@rabbitmq.com> [Wed, 25 Aug 2010 18:14:19 +0100] rev 4614
Set default paths for cygwin
Matthew Sackman <matthew@rabbitmq.com> [Wed, 25 Aug 2010 17:21:52 +0100] rev 4613
Convert use of proplists:lookup to proplists:get_value
Matthew Sackman <matthew@rabbitmq.com> [Wed, 25 Aug 2010 17:13:38 +0100] rev 4612
Merging default into bug 15930 and minor debitrot (heartbeater)
Matthias Radestock <matthias@rabbitmq.com> [Wed, 25 Aug 2010 17:03:31 +0100] rev 4611
oops
Matthias Radestock <matthias@rabbitmq.com> [Wed, 25 Aug 2010 16:26:31 +0100] rev 4610
merge bug19230 into junk
Matthias Radestock <matthias@rabbitmq.com> [Wed, 25 Aug 2010 16:06:17 +0100] rev 4609
get rid of hook mechanism
It's only ever been used in the bug19230 branch, which is defunct.
Matthias Radestock <matthias@rabbitmq.com> [Wed, 25 Aug 2010 15:46:11 +0100] rev 4608
remove dead code
nobody ever uses the reader profiling, and the underlying config
mechanism hasn't been used by anything else.
Simon MacMullen <simon@rabbitmq.com> [Wed, 25 Aug 2010 15:36:27 +0100] rev 4607
Merge bug 23131 into default (display plugin version during activation)
Matthias Radestock <matthias@rabbitmq.com> [Wed, 25 Aug 2010 14:55:09 +0100] rev 4606
display app version during plugin activation
Matthew Sackman <matthew@rabbitmq.com> [Wed, 25 Aug 2010 12:54:00 +0100] rev 4605
Ensure that non-deletion queue-termination does a call via the msg_store to ensure all messages from the queue have made it to the msg_store's mailbox (and have actually also been acted on)
Matthew Sackman <matthew@rabbitmq.com> [Wed, 25 Aug 2010 11:52:24 +0100] rev 4604
Merging in default now that default has only one head
Matthew Sackman <matthew@rabbitmq.com> [Wed, 25 Aug 2010 11:51:24 +0100] rev 4603
Merge heads of default
Alexandru Scvortov <alexandru@rabbitmq.com> [Wed, 25 Aug 2010 11:38:07 +0100] rev 4602
exclusive queues are deleted quickly on unclean connection termination
Alexandru Scvortov <alexandru@rabbitmq.com> [Wed, 25 Aug 2010 11:32:23 +0100] rev 4601
exclusive queues are deleted quickly on clean connection termination
Matthew Sackman <matthew@rabbitmq.com> [Wed, 25 Aug 2010 11:32:43 +0100] rev 4600
Convert client_delete_and_terminate from a call to a cast
Alexandru Scvortov <alexandru@rabbitmq.com> [Wed, 25 Aug 2010 10:17:20 +0100] rev 4599
updated docs
Alexandru Scvortov <alexandru@rabbitmq.com> [Wed, 25 Aug 2010 10:12:04 +0100] rev 4598
removed all references to pcall and pcast
Matthias Radestock <matthias@rabbitmq.com> [Wed, 25 Aug 2010 05:51:02 +0100] rev 4597
preemptively detect common cause of failed startup
namely when the node does actually start (if it doesn't then the
launcher process terminates, which we detect already) but we cannot
connect to it due to dns/network/epmd issues
Alexandru Scvortov <alexandru@rabbitmq.com> [Tue, 24 Aug 2010 17:46:54 +0100] rev 4596
typo
Alexandru Scvortov <alexandru@rabbitmq.com> [Tue, 24 Aug 2010 17:19:53 +0100] rev 4595
refactoring
Alexandru Scvortov <alexandru@rabbitmq.com> [Tue, 24 Aug 2010 16:03:40 +0100] rev 4594
migrated rabbit_limiter to prioritizers
Alexandru Scvortov <alexandru@rabbitmq.com> [Tue, 24 Aug 2010 15:59:05 +0100] rev 4593
refactoring
Alexandru Scvortov <alexandru@rabbitmq.com> [Tue, 24 Aug 2010 15:52:01 +0100] rev 4592
migrated amqqueue to prioritisers
Alexandru Scvortov <alexandru@rabbitmq.com> [Tue, 24 Aug 2010 15:27:05 +0100] rev 4591
migrated msg_store to prioritisers
Alexandru Scvortov <alexandru@rabbitmq.com> [Tue, 24 Aug 2010 15:01:48 +0100] rev 4590
merge default into bug23157
Alexandru Scvortov <alexandru@rabbitmq.com> [Tue, 24 Aug 2010 15:01:26 +0100] rev 4589
rabbit_channel migrated to prioritisers
Alexandru Scvortov <alexandru@rabbitmq.com> [Tue, 24 Aug 2010 14:43:14 +0100] rev 4588
added error handling wrappers for prioritisers
Alexandru Scvortov <alexandru@rabbitmq.com> [Tue, 24 Aug 2010 14:24:01 +0100] rev 4587
prioritize -> prioritise
Emile Joubert <emile@rabbitmq.com> [Tue, 24 Aug 2010 16:44:51 +0100] rev 4586
Don't nest lists
Emile Joubert <emile@rabbitmq.com> [Tue, 24 Aug 2010 16:29:18 +0100] rev 4585
Supply ssl verify function conditionally
Michael Bridgen <mikeb@rabbitmq.com> [Tue, 24 Aug 2010 16:12:08 +0100] rev 4584
Added tag rabbitmq_v2_0_0 for changeset 4f72e4d66f23
Michael Bridgen <mikeb@rabbitmq.com> [Tue, 24 Aug 2010 14:48:48 +0100] rev 4583
Changelog updates
Emile Joubert <emile@rabbitmq.com> [Tue, 24 Aug 2010 14:56:27 +0100] rev 4582
Take peer verification config into account in verify function
This works around a limitation in the ssl module, which does not honour verify_none
Emile Joubert <emile@rabbitmq.com> [Mon, 23 Aug 2010 16:47:38 +0100] rev 4581
Accept multiple SSL verification errors
Alexandru Scvortov <alexandru@rabbitmq.com> [Mon, 23 Aug 2010 15:24:30 +0100] rev 4580
merge bug23167 into default (Large msg_store mailbox can block queue.declare)
Alexandru Scvortov <alexandru@rabbitmq.com> [Mon, 23 Aug 2010 15:10:02 +0100] rev 4579
unprioritized calls, casts and infos are passed through the prioritize functions
PCalls and PCasts have the priorities assigned to them by the pcall, pcast call.
Everything else gets its priority set by prioritize_call/3,
prioritize_cast/2 or prioritize_info/2.
Alexandru Scvortov <alexandru@rabbitmq.com> [Mon, 23 Aug 2010 15:06:26 +0100] rev 4578
gen_server2: functions now use a record instead of 9 arguments
Emile Joubert <emile@rabbitmq.com> [Mon, 23 Aug 2010 14:35:05 +0100] rev 4577
Don't ignore SSL certificate verification errors
Michael Bridgen <mikeb@rabbitmq.com> [Mon, 23 Aug 2010 12:23:49 +0100] rev 4576
Merge bug23155
Matthew Sackman <matthew@rabbitmq.com> [Sun, 22 Aug 2010 22:16:38 +0100] rev 4575
Add priorities to two calls to ensure queue declaration remains quick even with a large msg_store workload
Matthias Radestock <matthias@rabbitmq.com> [Sun, 22 Aug 2010 21:58:05 +0100] rev 4574
make 'xmlto' invocation work with stricter getopt implementations
Matthias Radestock <matthias@rabbitmq.com> [Sun, 22 Aug 2010 20:56:10 +0100] rev 4573
merge bug23153 into default
Matthew Sackman <matthew@rabbitmq.com> [Sun, 22 Aug 2010 20:21:01 +0100] rev 4572
Avoid crash
Matthias Radestock <matthias@rabbitmq.com> [Sun, 22 Aug 2010 19:53:11 +0100] rev 4571
ensure and assert that closed handles have last_used_at=undefined
That way it is more obvious which handles should be in the age tree
and which shouldn't.
Matthias Radestock <matthias@rabbitmq.com> [Sun, 22 Aug 2010 19:51:27 +0100] rev 4570
cosmetic
Matthias Radestock <matthias@rabbitmq.com> [Sun, 22 Aug 2010 19:38:40 +0100] rev 4569
make it more obvious that reopen is a with_age_tree in disguise
plus some minor cosmetic shuffling
Matthias Radestock <matthias@rabbitmq.com> [Sun, 22 Aug 2010 19:30:46 +0100] rev 4568
don't traverse age tree unnnecessarily on error in reopen
this also makes it clearer what's going on
Matthew Sackman <matthew@rabbitmq.com> [Sun, 22 Aug 2010 19:06:16 +0100] rev 4567
cosmetic
Matthias Radestock <matthias@rabbitmq.com> [Sun, 22 Aug 2010 19:01:54 +0100] rev 4566
refactor: move open1 into reopen
Matthew Sackman <matthew@rabbitmq.com> [Sun, 22 Aug 2010 18:19:14 +0100] rev 4565
If we've obtained permission to open some fds and that turns out not to work out, then we should ensure that we inform the server as soon as we stop that the rest remain closed
Matthias Radestock <matthias@rabbitmq.com> [Sun, 22 Aug 2010 17:16:03 +0100] rev 4564
record for pending items
Matthew Sackman <matthew@rabbitmq.com> [Sun, 22 Aug 2010 17:07:14 +0100] rev 4563
Modify test so that the -1 => -2 change to OBTAIN_LIMIT does not result in the test having sufficient fds available such that the copy could be satisfied without closing
Matthew Sackman <matthew@rabbitmq.com> [Sun, 22 Aug 2010 16:56:54 +0100] rev 4562
Use foldr instead of foldl to avoid having to do extra reverses
Matthias Radestock <matthias@rabbitmq.com> [Sun, 22 Aug 2010 16:33:33 +0100] rev 4561
always return refs/handles in correct order
to improve clarity at the expense of a few list:reverses.
Matthias Radestock <matthias@rabbitmq.com> [Sun, 22 Aug 2010 15:26:55 +0100] rev 4560
cosmetic
Matthias Radestock <matthias@rabbitmq.com> [Sun, 22 Aug 2010 15:26:36 +0100] rev 4559
always leave at least two fds unobtainable
so that 'copy' can succeed
Also, zero-clamp obtain limit
Matthew Sackman <matthew@rabbitmq.com> [Sun, 22 Aug 2010 14:33:21 +0100] rev 4558
Merging heads of default
Matthew Sackman <matthew@rabbitmq.com> [Sun, 22 Aug 2010 14:30:01 +0100] rev 4557
Merging bug 23166 into default
Matthias Radestock <matthias@rabbitmq.com> [Sun, 22 Aug 2010 13:50:13 +0100] rev 4556
refactor: make new_closed_handle create the Ref and return it
Matthias Radestock <matthias@rabbitmq.com> [Sun, 22 Aug 2010 13:43:42 +0100] rev 4555
add test
this fails on default (or, rather, bug23166, until that is merged)
Matthias Radestock <matthias@rabbitmq.com> [Sun, 22 Aug 2010 13:37:38 +0100] rev 4554
merge bug23166 into bug23153
Matthias Radestock <matthias@rabbitmq.com> [Sun, 22 Aug 2010 12:44:18 +0100] rev 4553
add support for dynamic setting/getting of fhc limit
and use that in tests
Matthew Sackman <matthew@rabbitmq.com> [Sun, 22 Aug 2010 04:06:18 +0100] rev 4552
Rejigged client side so that it asks for the correct number of fds upfront.
Matthew Sackman <matthew@rabbitmq.com> [Sat, 21 Aug 2010 20:01:04 +0100] rev 4551
Modify server logic to deal with requests for multiple fds. Including nice pending_queues abstraction. Client logic remains to be done.
Matthew Sackman <matthew@rabbitmq.com> [Fri, 20 Aug 2010 18:53:39 +0100] rev 4550
Add infrastructure to server to be able to handle requests for multiple fds
Matthias Radestock <matthias@rabbitmq.com> [Fri, 20 Aug 2010 18:47:22 +0100] rev 4549
merge bug23152 into default
Matthias Radestock <matthias@rabbitmq.com> [Fri, 20 Aug 2010 16:58:16 +0100] rev 4548
merge bug23139 into default
Matthias Radestock <matthias@rabbitmq.com> [Fri, 20 Aug 2010 16:17:23 +0100] rev 4547
oops
Matthias Radestock <matthias@rabbitmq.com> [Fri, 20 Aug 2010 16:12:21 +0100] rev 4546
merge heads
Matthias Radestock <matthias@rabbitmq.com> [Fri, 20 Aug 2010 16:09:09 +0100] rev 4545
simplification due to the fact that we always request closing of all
Matthias Radestock <matthias@rabbitmq.com> [Fri, 20 Aug 2010 16:08:26 +0100] rev 4544
cosmetic
Matthew Sackman <matthew@rabbitmq.com> [Fri, 20 Aug 2010 15:48:44 +0100] rev 4543
ensure_mref => track_client andalso cosmetic
Matthew Sackman <matthew@rabbitmq.com> [Fri, 20 Aug 2010 15:25:47 +0100] rev 4542
Merging heads
Matthew Sackman <matthew@rabbitmq.com> [Fri, 20 Aug 2010 15:24:34 +0100] rev 4541
Convert fhc to use an ets table with record per client which amalgamates several of the previous state entries
Matthias Radestock <matthias@rabbitmq.com> [Fri, 20 Aug 2010 15:05:54 +0100] rev 4540
cosmetic and some minor refactoring
Matthias Radestock <matthias@rabbitmq.com> [Fri, 20 Aug 2010 14:57:38 +0100] rev 4539
fix bug that crept in
Matthew Sackman <matthew@rabbitmq.com> [Fri, 20 Aug 2010 14:14:34 +0100] rev 4538
Given the clients are demanded to close all open fds when asked to, them sending a boolean is irrelvant now
Matthew Sackman <matthew@rabbitmq.com> [Fri, 20 Aug 2010 13:02:21 +0100] rev 4537
If we sent an age of 0 to clients, make sure we do not send more ages of 0 to the same clients until they've actually closed all their handles. This ensures that as more requests come in once we're low on fds, we don't send hundreds of 0 ages to the same clients erroneously. It also means that we always target the correct number of *unique* clients to ask to close their fds, which avoids thrashing the same clients and improves performance markedly.
Also, if on open, we send "close" back to the client, that client *is* blocked (actually, due to have 0 opens) as we know it'll close, send us some closed msgs and then re do the open call. Thus we shouldn't be sending it any set maximum age messages.
Alexandru Scvortov <alexandru@rabbitmq.com> [Fri, 20 Aug 2010 10:12:19 +0100] rev 4536
stopped a race
Matthew Sackman <matthew@rabbitmq.com> [Thu, 19 Aug 2010 18:47:51 +0100] rev 4535
Grab the msg from the cur ets file cache, thus avoiding having to send the same message many times
Matthias Radestock <matthias@rabbitmq.com> [Thu, 19 Aug 2010 18:45:15 +0100] rev 4534
refactor
Matthias Radestock <matthias@rabbitmq.com> [Thu, 19 Aug 2010 17:08:22 +0100] rev 4533
cosmetic
Matthew Sackman <matthew@rabbitmq.com> [Thu, 19 Aug 2010 18:13:37 +0100] rev 4532
Merging default into bug 23133
Matthew Sackman <matthew@rabbitmq.com> [Thu, 19 Aug 2010 18:13:05 +0100] rev 4531
Merging old head of bug 23133 to junk
Matthew Sackman <matthew@rabbitmq.com> [Wed, 18 Aug 2010 16:31:35 +0100] rev 4530
Abstract refcount == 0 to imply not_found for appropriate call sites
Matthew Sackman <matthew@rabbitmq.com> [Wed, 18 Aug 2010 16:24:22 +0100] rev 4529
By this stage of the client-read, we know a GC can't start and can't be in progress. Thus even if the refcount is 0, we're still safe to read it. What's more, this area of code has never made provision for the index_lookup to return a not_found - it will crash if that happens. Thus if the implicit assumption is that the message must exist, then by the same token, we know the refcount will always be > 0
Matthew Sackman <matthew@rabbitmq.com> [Wed, 18 Aug 2010 16:15:58 +0100] rev 4528
Abstraction of the inner write function
Matthew Sackman <matthew@rabbitmq.com> [Wed, 18 Aug 2010 15:54:29 +0100] rev 4527
cosmetic
Matthew Sackman <matthew@rabbitmq.com> [Wed, 18 Aug 2010 15:50:42 +0100] rev 4526
Because we can increment the refcount back above 0, the calculation of the contiguous top needs to be contiguousTop + totalSize, because the validtotalsize can contain data that's well beyond the old contiguous top
Alexandru Scvortov <alexandru@rabbitmq.com> [Thu, 19 Aug 2010 17:20:09 +0100] rev 4525
fixed an ever-expanding dictionary
The problem with the current design is that the lowest layer that knows
about confirmations is amqqueue_process. This means that
amqqueue_process, variable_queue, msg_store and queue_index need to do
all the bookkeeping associated with confirmations even if they're not
enabled. Mind you, this doesn't slow things down noticeably.
Alexandru Scvortov <alexandru@rabbitmq.com> [Thu, 19 Aug 2010 15:35:39 +0100] rev 4524
refactoring + don't do useless work
Alexandru Scvortov <alexandru@rabbitmq.com> [Thu, 19 Aug 2010 14:04:23 +0100] rev 4523
don't do any unnecessary work when publishing in confirm mode
Matthew Sackman <matthew@rabbitmq.com> [Thu, 19 Aug 2010 16:54:12 +0100] rev 4522
Some essential assertions
Matthew Sackman <matthew@rabbitmq.com> [Thu, 19 Aug 2010 16:43:55 +0100] rev 4521
More meaningful variable name
Matthew Sackman <matthew@rabbitmq.com> [Thu, 19 Aug 2010 16:36:09 +0100] rev 4520
Whoops
Matthew Sackman <matthew@rabbitmq.com> [Thu, 19 Aug 2010 16:27:08 +0100] rev 4519
Reworked substantially
Alexandru Scvortov <alexandru@rabbitmq.com> [Thu, 19 Aug 2010 13:54:58 +0100] rev 4518
merge bug23150 into default
Matthew Sackman <matthew@rabbitmq.com> [Thu, 19 Aug 2010 13:44:34 +0100] rev 4517
Remove modifications that I accidentally introduced for testing and forgot to remove prior to ci'ing the merge
Matthew Sackman <matthew@rabbitmq.com> [Thu, 19 Aug 2010 13:40:34 +0100] rev 4516
Merging default into bug 23139 (substantial debitrot)
Matthew Sackman <matthew@rabbitmq.com> [Thu, 19 Aug 2010 13:16:39 +0100] rev 4515
Use string tokens, not re:split
Matthew Sackman <matthew@rabbitmq.com> [Thu, 19 Aug 2010 13:07:44 +0100] rev 4514
Merging bug 23138 into default
Matthias Radestock <matthias@rabbitmq.com> [Thu, 19 Aug 2010 12:28:48 +0100] rev 4513
once again allow use of fhc w/o registering
Matthias Radestock <matthias@rabbitmq.com> [Thu, 19 Aug 2010 12:20:18 +0100] rev 4512
refactor
Matthias Radestock <matthias@rabbitmq.com> [Thu, 19 Aug 2010 11:05:02 +0100] rev 4511
rewrite
Alexandru Scvortov <alexandru@rabbitmq.com> [Thu, 19 Aug 2010 10:58:27 +0100] rev 4510
added xref check for undefined, unused and deprecated functions
Matthew Sackman <matthew@rabbitmq.com> [Wed, 18 Aug 2010 17:40:19 +0100] rev 4509
Don't ever keep the recovery process waiting, regardless of whether the queue is going down or not
(transplanted from 4c99ba7eedd4b28a096d0412bbbdacb1fa91daa3)
Matthew Sackman <matthew@rabbitmq.com> [Wed, 18 Aug 2010 17:29:35 +0100] rev 4508
A rather crucial infinity missing
(transplanted from aaf79aa3cacefee1742eb7f257c6a16ec5720d59)
Matthias Radestock <matthias@rabbitmq.com> [Wed, 18 Aug 2010 23:34:01 +0100] rev 4507
re-merge rebased bug23145 into new head of default
David Wragg <david@rabbitmq.com> [Wed, 18 Aug 2010 14:52:40 +0100] rev 4506
Eliminate RABBITMQ_PLUGINS_EXPAND_DIR
There were a number of issues with RABBITMQ_PLUGINS_EXPAND_DIR:
- It was undocumented in the context of the generic unix package, and
if unwisely set could do an effective "rm -rf" in an unintended
location.
- It did not take account of the possibility that multiple nodes could
be starting at once, and so doing plugins activation
simultanteously.
Instead, use RABBITMQ_MNESIA_DIR/plugins-scratch. This avoids the
need to extend the generic unix package documentation, the location is
node-specific, and the distinctive plugins-scratch subdirectory
reduces the risk of unintended file deletions.
(transplanted from 064b8797493bb290156fb72a54f9e9276df0faed)
Matthias Radestock <matthias@rabbitmq.com> [Wed, 18 Aug 2010 23:18:27 +0100] rev 4505
merge default into junk
in order to backout the merge of bug23142, which turns out to have
introduced some not easily fixed breakages.
Matthias Radestock <matthias@rabbitmq.com> [Wed, 18 Aug 2010 23:17:04 +0100] rev 4504
remove files from junk
to aid subsequent merges
Matthew Sackman <matthew@rabbitmq.com> [Wed, 18 Aug 2010 22:10:07 +0100] rev 4503
Cope with removes overtaking writes
Matthew Sackman <matthew@rabbitmq.com> [Wed, 18 Aug 2010 22:09:22 +0100] rev 4502
Merging default into ug 23142
Matthew Sackman <matthew@rabbitmq.com> [Wed, 18 Aug 2010 17:47:09 +0100] rev 4501
Merging default into bug23133
Alexandru Scvortov <alexandru@rabbitmq.com> [Wed, 18 Aug 2010 16:43:33 +0100] rev 4500
fixed a small empty-set bug
Alexandru Scvortov <alexandru@rabbitmq.com> [Wed, 18 Aug 2010 15:03:56 +0100] rev 4499
deleting a queue causes all of its messages to be puback'd
Alexandru Scvortov <alexandru@rabbitmq.com> [Wed, 18 Aug 2010 12:12:49 +0100] rev 4498
confirm transient messages only after basic.return
Matthew Sackman <matthew@rabbitmq.com> [Wed, 18 Aug 2010 17:40:19 +0100] rev 4497
Don't ever keep the recovery process waiting, regardless of whether the queue is going down or not
Matthew Sackman <matthew@rabbitmq.com> [Wed, 18 Aug 2010 17:29:35 +0100] rev 4496
A rather crucial infinity missing
Matthew Sackman <matthew@rabbitmq.com> [Wed, 18 Aug 2010 16:31:35 +0100] rev 4495
Abstract refcount == 0 to imply not_found for appropriate call sites
Matthew Sackman <matthew@rabbitmq.com> [Wed, 18 Aug 2010 16:24:22 +0100] rev 4494
By this stage of the client-read, we know a GC can't start and can't be in progress. Thus even if the refcount is 0, we're still safe to read it. What's more, this area of code has never made provision for the index_lookup to return a not_found - it will crash if that happens. Thus if the implicit assumption is that the message must exist, then by the same token, we know the refcount will always be > 0
Matthew Sackman <matthew@rabbitmq.com> [Wed, 18 Aug 2010 16:15:58 +0100] rev 4493
Abstraction of the inner write function
Michael Bridgen <mikeb@rabbitmq.com> [Wed, 18 Aug 2010 16:11:50 +0100] rev 4492
Merge in bug23145 (put plugin expand dir in db dir)
Matthew Sackman <matthew@rabbitmq.com> [Wed, 18 Aug 2010 15:54:29 +0100] rev 4491
cosmetic
Matthew Sackman <matthew@rabbitmq.com> [Wed, 18 Aug 2010 15:50:42 +0100] rev 4490
Because we can increment the refcount back above 0, the calculation of the contiguous top needs to be contiguousTop + totalSize, because the validtotalsize can contain data that's well beyond the old contiguous top
David Wragg <david@rabbitmq.com> [Wed, 18 Aug 2010 14:52:40 +0100] rev 4489
Eliminate RABBITMQ_PLUGINS_EXPAND_DIR
There were a number of issues with RABBITMQ_PLUGINS_EXPAND_DIR:
- It was undocumented in the context of the generic unix package, and
if unwisely set could do an effective "rm -rf" in an unintended
location.
- It did not take account of the possibility that multiple nodes could
be starting at once, and so doing plugins activation
simultanteously.
Instead, use RABBITMQ_MNESIA_DIR/plugins-scratch. This avoids the
need to extend the generic unix package documentation, the location is
node-specific, and the distinctive plugins-scratch subdirectory
reduces the risk of unintended file deletions.
Matthew Sackman <matthew@rabbitmq.com> [Wed, 18 Aug 2010 14:47:53 +0100] rev 4488
Merge default into bug 23133
Matthew Sackman <matthew@rabbitmq.com> [Wed, 18 Aug 2010 14:43:20 +0100] rev 4487
Backed out changeset c47670da4830 - I decided the dedup cache shouldn't be mangled with.
Matthias Radestock <matthias@rabbitmq.com> [Wed, 18 Aug 2010 14:42:12 +0100] rev 4486
merge bug23142 into default
Matthew Sackman <matthew@rabbitmq.com> [Wed, 18 Aug 2010 13:15:17 +0100] rev 4485
Minor tweaks
Matthew Sackman <matthew@rabbitmq.com> [Wed, 18 Aug 2010 12:57:34 +0100] rev 4484
eliminate duplicate write messages completely, and simply rely on the pending write count in the cur ets file cache to indicate the delta to the refcount
Alexandru Scvortov <alexandru@rabbitmq.com> [Wed, 18 Aug 2010 10:24:25 +0100] rev 4483
told dialyzer to check for more things
As Matthew suggested, I've added {wranings, [underspecs, behaiviours,
race_conditions]} to dialyzer's options. As a result, we now have 56
warnings instead of just the 4. Most of them are underspecs (i.e. we
say a function returns any() but dialyzer's figured out that's overly
general).
Matthias Radestock <matthias@rabbitmq.com> [Wed, 18 Aug 2010 06:27:12 +0100] rev 4482
small simplifying refactor
Matthias Radestock <matthias@rabbitmq.com> [Wed, 18 Aug 2010 04:24:34 +0100] rev 4481
take current memory alarms status into account straight away
This does in fact not alter the behaviour at all due to the following:
- if the alarm is active the alarm registration will call the handler
straight way, which will send a {conserve_memory, true} message to the
reader.
- the reply to the alarm registration is sent after that, and from the
same process - the alarm process - so by the time the reader loops
around the mainloop again the {conserve_memory, true} message is
guaranteed to be in the mailbox
- on looping around, the reader request a frame_header from the
socket. The reader has already sent connection.open_ok to the client,
and the client may have started sending commands straight away. But
all the reader is going to see of that to start with is an {inet_async,
...} message for a frame_header. That is guaranteed to end up in the
mailbox after the {conserve_memory, true} message.
Thus the reader is guaranteed to process the {conserve_memory, true}
message before handling any more data from the socket.
With this change it is rather more obvious that the memory alarm
status gets taken into account before any more client data is
processed.
Matthew Sackman <matthew@rabbitmq.com> [Tue, 17 Aug 2010 18:55:44 +0100] rev 4480
treat the dedup cache the same way as the index - permit 0 ref_counts and prune on file roll
Matthew Sackman <matthew@rabbitmq.com> [Tue, 17 Aug 2010 18:37:35 +0100] rev 4479
Merging default into bug 15930
Matthew Sackman <matthew@rabbitmq.com> [Tue, 17 Aug 2010 18:37:22 +0100] rev 4478
Merging default into bug 23133
Matthew Sackman <matthew@rabbitmq.com> [Tue, 17 Aug 2010 18:08:47 +0100] rev 4477
The solution is very simple: In the case where the fhc sends out requests to close file handles, the clients might respond very quickly. The fhc will then gather these responses (say, just updates, not closes) and then will sit there for 2 seconds until the timer goes off. Thus the solution is just to subtract the timer period from the calculated average: i.e. the expression is to say 'close file handles that haven't been used for N seconds from NOW' rather than the previous 'close file handles that haven't been used for N seconds from NOW - 2 seconds ago'. This works very nicely and whilst the fhc can get quite busy when there are more users of file handles than there are file handles available, that is hardly surprising, and the fact is starvation is prevented and processes are promptly serviced
Matthew Sackman <matthew@rabbitmq.com> [Tue, 17 Aug 2010 17:42:23 +0100] rev 4476
Track blocked pids explicitly
Alexandru Scvortov <alexandru@rabbitmq.com> [Tue, 17 Aug 2010 17:33:13 +0100] rev 4475
refactoring
Alexandru Scvortov <alexandru@rabbitmq.com> [Tue, 17 Aug 2010 17:05:44 +0100] rev 4474
publisher acks for persistent messages
Acknowledgements are sent to the producer in the following cases
(assuming the channel in confirm mode):
- a transient message has been received (i.e. it is ack'd
immediately),
- a basic return has been sent (the ack is sent immediately
afterwards),
- a persistent message has been consumed [by a consumer] or got [via
basic.get] and ack'd by the client (or the retrieval was no-ack),
- a persistent message has been written to disk (both the message
and its index).
At least in theory, every message published on a confirm channel will
at some point be ack'd. A message is only ack'd once and the reason
it was ack'd is hidden.
Alexandru Scvortov <alexandru@rabbitmq.com> [Tue, 17 Aug 2010 15:51:14 +0100] rev 4473
queue_index keeps track of which messages have been published but not written to disk
There are 2 ways queue_index writes something to disk:
- the journal is synced, and
- the journal is flushed (i.e. scattered across many files and those
files closed).
Since queue_index is the same process as variable_queue, we just keep
a list of guids that have been published and we just call an on_sync
handler whenever these are written to disk.
Alexandru Scvortov <alexandru@rabbitmq.com> [Tue, 17 Aug 2010 12:53:18 +0100] rev 4472
persistent messages are ack'd only after the consumer acks it
Alexandru Scvortov <alexandru@rabbitmq.com> [Tue, 17 Aug 2010 10:45:33 +0100] rev 4471
move msg_seq_no from #basic_message{} to #delivery{}
Matthew Sackman <matthew@rabbitmq.com> [Tue, 17 Aug 2010 17:24:27 +0100] rev 4470
Correct monitoring and actions upon DOWN messages. Note this is especially subtle for obtains, which effectively implicitly allocates temporarily to the blocked caller (FromPid) whilst monitoring it, and then transfers this to the ForPid when possible. Note the ForPid can die before the obtains is processed, which which point the FromPid must be replied to immediately.
Matthias Radestock <matthias@rabbitmq.com> [Tue, 17 Aug 2010 15:01:41 +0100] rev 4469
merge bug23135 into default
Matthew Sackman <matthew@rabbitmq.com> [Tue, 17 Aug 2010 14:05:52 +0100] rev 4468
obtain_and_release_on_death => obtain, and minor refactor of tcp acceptor
Matthew Sackman <matthew@rabbitmq.com> [Tue, 17 Aug 2010 13:54:03 +0100] rev 4467
Combine obtains and release_on_death
Marek Majkowski <marek@rabbitmq.com> [Tue, 17 Aug 2010 13:53:11 +0100] rev 4466
bug22906 merged into junk
Matthias Radestock <matthias@rabbitmq.com> [Tue, 17 Aug 2010 12:54:57 +0100] rev 4465
merge bug23132 into default
Matthew Sackman <matthew@rabbitmq.com> [Tue, 17 Aug 2010 12:20:22 +0100] rev 4464
Minor corrections
Alexandru Scvortov <alexandru@rabbitmq.com> [Tue, 17 Aug 2010 09:44:49 +0100] rev 4463
first stab at keeping track of when messages are synced to disk
Alexandru Scvortov <alexandru@rabbitmq.com> [Mon, 16 Aug 2010 11:31:48 +0100] rev 4462
refactoring
Alexandru Scvortov <alexandru@rabbitmq.com> [Sun, 15 Aug 2010 22:44:38 +0100] rev 4461
PubAcks are de-dupped in rabbit_channel
Matthias Radestock <matthias@rabbitmq.com> [Mon, 16 Aug 2010 21:44:24 +0100] rev 4460
cosmetic
Matthias Radestock <matthias@rabbitmq.com> [Mon, 16 Aug 2010 21:21:23 +0100] rev 4459
tweak
Matthias Radestock <matthias@rabbitmq.com> [Mon, 16 Aug 2010 21:18:44 +0100] rev 4458
tweak