summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Removed state from fhc. The reasoning is as follows:Matthew Sackman2009-10-232-173/+134
| | | | | | 1) the fhc uses the process dict 2) the fhc needs to receive msgs from its server process as to limiting the age of unused fhs. This is clearly per process as such, it's daft to cater for a process having more than one state for the fhc. Thus any state necessary will also be put in the process dict.
* drop the offset arg to read, also account for the possibility that we didn't ↵Matthew Sackman2009-10-222-32/+15
| | | | read as much of the file as we asked for. All tests pass.
* starting to deal with the idea that fhs may disappear because of hitting limitsMatthew Sackman2009-10-221-38/+61
|
* bug fix in fhc:read (not tracking change in offset). Also made qi use new ↵Matthew Sackman2009-10-223-292/+91
| | | | fhc, and remove hdfhc
* not quite complete, but much much simpler, and prettierMatthew Sackman2009-10-221-120/+106
|
* More work on the real fhcMatthew Sackman2009-10-221-29/+124
|
* trivial and cosmeticMatthew Sackman2009-10-221-2/+1
|
* Started work on the real file handle cacheMatthew Sackman2009-10-221-0/+214
|
* Added write buffers. Performance now very very good, and could get better if ↵Matthew Sackman2009-10-211-38/+59
| | | | can get msg_store to use the new fhc. All tests pass. Sometimes.
* Added sync_all for queue_index, trap exits in amqqueue_process, make sure ↵Matthew Sackman2009-10-213-7/+24
| | | | that terminate calls terminate in variable_queue which calls through into terminate in queue_process.
* remove unnecessary rabbit_ prefix in process dictionary entries in fhcMatthew Sackman2009-10-211-19/+19
|
* fprof shows that dict really sucks hard, so switch to using the process ↵Matthew Sackman2009-10-212-122/+103
| | | | dictionary in the fhc. This eliminates all need for state, however, I've not removed fhc state from either fhc or qi because of the likelihood of needing some state back in for the real fhc. Performance is now much better because I went back to the original qi before the fhc modifications and realised that I should have been opening files with read_ahead enabled, which I wasn't before. In fact really, performance is now quite a fair bit better than before the fhc came in.
* still far too slowMatthew Sackman2009-10-201-33/+17
|
* well, it's about 4 times slower, but the dumb fhc works on the queue indexMatthew Sackman2009-10-202-211/+528
|
* don't use foreach seeing as I'm not using it anywhere elseMatthew Sackman2009-10-191-3/+3
|
* make sure we stop the msg_store at the start of the queue_index testsMatthew Sackman2009-10-191-0/+1
|
* Extending queue index test slightlyMatthew Sackman2009-10-191-21/+39
|
* reversing previous change, as I had actually got it right first timeMatthew Sackman2009-10-191-3/+2
|
* more helpful when the bugfix fixes the bugMatthew Sackman2009-10-191-2/+3
|
* tidying up end of test_queue_indexMatthew Sackman2009-10-191-1/+3
|
* Some minor API changes which are pretty sensible anyway, but also make ↵Matthew Sackman2009-10-194-28/+106
| | | | writing tests much easier. Also, tests for queue_index which hit 90% code coverage for the module. Profiling in progress to try and figure out why it's not quite as blazingly fast as I expected.
* added missing specMatthew Sackman2009-10-191-0/+1
|
* spellingMatthew Sackman2009-10-191-1/+1
|
* now() -> make_ref()Matthew Sackman2009-10-191-3/+3
|
* preemptive refactoringMatthew Sackman2009-10-191-60/+57
|
* factoring out of some magic numbersMatthew Sackman2009-10-191-2/+3
|
* stop the msg_store at the end of the tests so the rest of the test suite can ↵Matthew Sackman2009-10-191-0/+12
| | | | run. Also, fractionally increase code coverage.
* test suite for msg_store - hit's 80% coverage - uncovered code is for ↵Matthew Sackman2009-10-191-466/+147
| | | | recovery from crashed compactions
* on requeue, make use of msg_store:releaseMatthew Sackman2009-10-191-11/+18
|
* If we don't fully flush the journal when it becomes full then we are ↵Matthew Sackman2009-10-161-12/+13
| | | | negating the point of the journal as it means we very frequently fill it and then have to empty it to one file, whereas if we fully empty it then it takes much longer to fill, and then we empty to several files
* empty queues that get deleted should, um, be deletedMatthew Sackman2009-10-161-10/+13
|
* assertion that the purge count equals the queue lengthMatthew Sackman2009-10-161-2/+2
|
* Bug fix.Matthew Sackman2009-10-162-11/+17
|
* Bug fix.Matthew Sackman2009-10-161-4/+5
|
* Bug fix.Matthew Sackman2009-10-161-15/+17
|
* Bug fix.Matthew Sackman2009-10-161-2/+5
|
* Bug fix.Matthew Sackman2009-10-163-17/+19
|
* bug fix.Matthew Sackman2009-10-161-2/+10
|
* bug fix.Matthew Sackman2009-10-161-1/+2
|
* A load more fixes. Seem to have uncovered the possibility of finding many ↵Matthew Sackman2009-10-144-12/+15
| | | | acks for the same msg when reading in a segment file...
* use lists:flatten, not hdMatthew Sackman2009-10-141-1/+1
|
* some more fixes. durable queue recovery seems to workMatthew Sackman2009-10-141-5/+5
|
* some initial fixesMatthew Sackman2009-10-142-4/+8
|
* the deletion of transient msgs via the scattering of the journal at startup ↵Matthew Sackman2009-10-141-47/+74
| | | | was wrong because there is no guarantee that the journal will touch all the segments. Thus now in the formation of the ack counts, add deliveries at that point where necessary for transient msgs. Acks for these msgs are not added at this point because they need to go via the journal scattering mechanism so that full segments can be removed.
* slightly more likely to workMatthew Sackman2009-10-141-4/+5
|
* cosmetics and also removal of bitstring syntax as it seems far too modern, ↵Matthew Sackman2009-10-141-7/+7
| | | | and actually isn't necessary because at no time do we need to deal with non byte-aligned binary data
* the queue index deletes transient msgs on initialisation. This is rather ↵Matthew Sackman2009-10-141-6/+17
| | | | elegant because it means that the delta gen fun used to seed the msg store does not generate any deltas for transient msgs, which means that the msg_store will take care of deleting transient msgs without any further interaction.
* Wire up the tx_commit callback. Note no coalescing because no sync on ↵Matthew Sackman2009-10-142-3/+10
| | | | queue_index because no fhc. Also added notes about the deletion of queues on startup.
* Be a bit more clever on starting the message store and look up durable ↵Matthew Sackman2009-10-134-37/+76
| | | | queues. However, it's still not quite right because queues can be deleted by other nodes in the cluster between extracting the list of durable queues in msg_store startup and the startup of queues themselves. This means that we can end up seeding the msg_store with msgs from queues that won't actually start up. You might think that we'd be saved by the fact that _process:terminate deletes the queue, but no, because fwics, _process isn't trapping exits, meaning that the terminate won't be called (and most likely rightly so so that it doesn't upset mnesia's state) by the exit(Pid, shutdown) in amqqueue:recover. So there still needs to be some sort of fix somewhere and somehow
* most of the rewiring is done. Need to sort out how to delete non durable ↵Matthew Sackman2009-10-136-1538/+73
| | | | queues on start up, which is a bit cyclical, as I'd like to not start the msg_store until we know which queues are durable and which aren't, but we also can't start the queues until the msg_store is running. Fun.