diff options
| author | Matthew Sackman <matthew@lshift.net> | 2009-11-10 14:07:28 +0000 |
|---|---|---|
| committer | Matthew Sackman <matthew@lshift.net> | 2009-11-10 14:07:28 +0000 |
| commit | 2e5301bb55a8cb7556ec519abc043f868b0b847d (patch) | |
| tree | 3631c6b3abf399853e008bfdd8aaa9d3949a73b0 /include | |
| parent | a6a6707c97e74e586bb6fb5ee1e0172350c64a38 (diff) | |
| download | rabbitmq-server-git-2e5301bb55a8cb7556ec519abc043f868b0b847d.tar.gz | |
Fixed. There was a choice of having the qi do its own seqids, which would have been fine, but for the fact that at any point, there is the possibility of the vq deciding to flush everything out to disk. Thus to avoid rewriting in order to preserve order, instead we cope with the fact that there may be partial segments. The solution is to have a dict of segments which received fewer than the expected number of publishes before a different segment was written to. Then, when adding acks, we check to see if the number of acks is now equal to the partial number of segments, if it is, delete. Also, when moving to a different segment, we potentially delete the seg file if the number of acks is equal to the number of publishes. One key aspect of this is that the current segment to which we are publishing never appears in this dict, so it is not possible to delete the current publish segment by having the same number of pubs and acks, without it being really really full. Added and modified tests accordingly.
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions
