Bron Gondwana wrote:
One downside of your patch - it changes the network protocol of
replication so that 2.3.6 and 2.3.7 won't be able to replicate
to each other in either direction - you'll have to upgrade both
your machines at once.
I considered that and thought about making it compatible, but given that
replication isn't usable in 2.3.6 period (or 2.3.4 or 2.3.5 for that
matter), I don't see that particular case as being worth much concern.
It's not compatible with 2.3.3 or earlier either, but to me it makes
little sense to have a replica that does not support the same feature
set as the primary server and vice-versa. If I have client machines that
start using conditional store and I need to fail over to a replica, I
want conditional store to continue to work with no surprises to the clients.
Incidentally, the reason I decided to send the modseq right before the
flags in the protocol was to that if someone wanted to extend the fix,
it would be easy to change the receiving code to automatically detect
whether a modseq was being sent or not by looking for the "(" that
starts the flags field, and if not, to stuff a 1 value instead, and this
way at least maintain compatibility in the case of older sending to newer.
However, given that this problem existed for over a month with no bug
report filed and only one email on the topic to the list (which went
unanswered), I figured not too many other people were interested in
replication anyway at this point and that just making it work with
itself properly at all was a good start.
David
----
Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html