summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@lshift.net>2009-11-10 14:07:28 +0000
committerMatthew Sackman <matthew@lshift.net>2009-11-10 14:07:28 +0000
commit2e5301bb55a8cb7556ec519abc043f868b0b847d (patch)
tree3631c6b3abf399853e008bfdd8aaa9d3949a73b0 /include
parenta6a6707c97e74e586bb6fb5ee1e0172350c64a38 (diff)
downloadrabbitmq-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