qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alan Conway" <acon...@redhat.com>
Subject Re: Review Request: QPID-3603: Allow Queue::setPosition() to truncate the queue.
Date Mon, 28 May 2012 13:29:22 GMT


> On 2012-05-25 14:49:56, Gordon Sim wrote:
> > /trunk/qpid/cpp/src/qpid/broker/Messages.h, line 108
> > <https://reviews.apache.org/r/5231/diff/2/?file=110241#file110241line108>
> >
> >     Is this still used?
> 
> Alan Conway wrote:
>     Yes. Even if you dequeue all the messages>=N you can't just push message N, you
need to clean up the index, e.g. chop the end off the underlying deque, so things will line
up.
> 
> Gordon Sim wrote:
>     I don't understand this, could you elaborate? If (assuming the changes in diff 2
where Queue::setPosition() uses the same approach as for purging expired messages) all the
messages are removed from Messages instance and then dequeued etc, why would any internal
state of the Messages instance not then be consistent?

A MessageDeque does not clean up at the back when messages are dequeued, so you can have a
bunch of DELETED records there. Pushing put the new message after all the DELETED records
and at the wrong index. (MessageMap does not need truncated, currently its just an assert
to verify there are no messages after the truncate point. PriorityQueue only needs trucate
in order to pass it to it's internal MessageDeque index)

We can't automatically clean up trailing DELETED records when a message is dequeued becaue
MessageDeque::push assumes that there are sufficient DELETED records to act as padding so
pushing to the back of the deque will be at the right index. There has to be a way to communicate
to the Messages implementation what the new back-of-queue position is.


- Alan


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/5231/#review8108
-----------------------------------------------------------


On 2012-05-25 17:55:24, Alan Conway wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/5231/
> -----------------------------------------------------------
> 
> (Updated 2012-05-25 17:55:24)
> 
> 
> Review request for qpid, Gordon Sim and Kenneth Giusti.
> 
> 
> Summary
> -------
> 
>     In the new HA code a backup may sometimes be ahead of the new primary after a
>     fail-over. In that case the backup truncates it's queues to the same position
>     as the primary so it can continue replicating.
> 
> 
> Diffs
> -----
> 
>   /trunk/qpid/cpp/src/qpid/broker/MessageDeque.h 1342442 
>   /trunk/qpid/cpp/src/qpid/broker/MessageDeque.cpp 1342442 
>   /trunk/qpid/cpp/src/qpid/broker/MessageMap.h 1342442 
>   /trunk/qpid/cpp/src/qpid/broker/MessageMap.cpp 1342442 
>   /trunk/qpid/cpp/src/qpid/broker/Messages.h 1342442 
>   /trunk/qpid/cpp/src/qpid/broker/PriorityQueue.h 1342442 
>   /trunk/qpid/cpp/src/qpid/broker/PriorityQueue.cpp 1342442 
>   /trunk/qpid/cpp/src/qpid/broker/Queue.h 1342442 
>   /trunk/qpid/cpp/src/qpid/broker/Queue.cpp 1342442 
>   /trunk/qpid/cpp/src/tests/Makefile.am 1342442 
>   /trunk/qpid/cpp/src/tests/QueueTest.cpp 1342442 
>   /trunk/qpid/cpp/src/tests/brokertest.py 1342442 
> 
> Diff: https://reviews.apache.org/r/5231/diff
> 
> 
> Testing
> -------
> 
> Passing make check, added unit tests to QueueTests.cpp
> 
> 
> Thanks,
> 
> Alan
> 
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message