FYI: PR just submitted, see https://github.com/apache/zookeeper/pull/1251 any comments welcomed! :)
Kind regards, Mate On Wed, Feb 12, 2020 at 1:16 PM Andor Molnar <an...@apache.org> wrote: > Hi Michael, > > "if we can get to rc2 without noticing a showstopper…” > > 200% disagree with this. > > The whole point of release voting system is to identify problems no matter > how big they are. The message of finding a showstopper for me is that > people paying attention and accurately testing the release. This is a very > good thing and emphasises how much effort the ZooKeeper community is > putting into every single release. Otherwise we could just set up a Jenkins > job which creates and publishes a new release in every six months and say > good luck with them. > > I admit that currently we don’t have (rolling) upgrade tests, but I feel > demand from the community to fill this gap. > > “rolling upgrades (and mixed ensembles generally) are effectively untested” > > Not true. That’s exactly what we are currently doing (manually for now). > > "there have to be a hundred corner cases beyond the MultiAddress issue” > > Sure thing. True for every new feature in every release. That’s why I’m > happy disabling it by default. People usually don’t pick up releases ending > with .0, production upgrades are expected from .1 or .2 or maybe later > depending on how much risk would like to be taken. > > Andor > > > > > On 2020. Feb 11., at 23:35, Michael K. Edwards <m.k.edwa...@gmail.com> > wrote: > > > > I think it would be prudent to emphasize in the release notes that > rolling > > upgrades (and mixed ensembles generally) are effectively untested. That > > this was, in practice, a non-goal of this release cycle. Because if we > can > > get to rc2 without noticing a showstopper, clearly it's not something > that > > anyone has gotten around to attempting; and there have to be a hundred > > corner cases beyond the MultiAddress issue. > > > > On Tue, Feb 11, 2020 at 12:27 PM Szalay-Bekő Máté < > > szalay.beko.m...@gmail.com> wrote: > > > >> I see the main problem here in the fact that we are missing proper > >> versioning in the leader election / quorum protocols. I tried to simply > >> implement backward compatibility in 3.6, but it didn't solve the > problem. > >> The new code understands the old protocol, but it can not decide when to > >> use the new or the old protocol during connection initiation. So the old > >> servers can not read the new init messages and we still temporarly end > up > >> having two partitions during rolling restart. > >> > >> I already suggested two ways to handle this later, but I think for 3.6.0 > >> now the simplest solution is to disable the new MultiAddress feature and > >> stick to the old protocol version by default. Plus extend the > >> documentation with the note, that enabling the MultiAddress feature is > not > >> possible during a rolling upgrade, but it needs to be done with a > separate > >> rolling restart. With this approach, the rolling restart should "just > work" > >> with the 3.4 / 3.5 configs and we don't require any extra step / > >> configuration from the users, unless they want to use the new feature. I > >> plan to submit a PR with these changes tomorrow to ZOOKEEPER-3720, if > there > >> isn't any different opinion. > >> > >> P.S. For 4.0 we might need to put some extra thinking into backward > >> compatibility / versioning for the quorum and client protocols. > >> > >> > >> On Tue, Feb 11, 2020, 20:44 Michael K. Edwards <m.k.edwa...@gmail.com> > >> wrote: > >> > >>> I hate to say it, but I think 3.6.0 should release as is. It is > >>> impossible > >>> to *reliably* retrofit backwards compatibility / interoperability onto > a > >>> release that was engineered from the beginning without that goal. > Learn > >>> the lesson, set goals differently in the future. > >>> > >>> On Tue, Feb 11, 2020 at 9:41 AM Szalay-Bekő Máté < > >>> szalay.beko.m...@gmail.com> > >>> wrote: > >>> > >>>> FYI: I created these scripts for my local tests: > >>>> https://github.com/symat/zk-rolling-upgrade-test > >>>> > >>>> For the long term I would also add some script that actually monitors > >>> the > >>>> state of the quorum and also runs continuous traffic, not just 1-2 > >>>> smoketests after each restart. But I don't know how important this > would > >>>> be. > >>>> > >>>> On Tue, Feb 11, 2020 at 5:25 PM Enrico Olivelli <eolive...@gmail.com> > >>>> wrote: > >>>> > >>>>> Il giorno mar 11 feb 2020 alle ore 17:17 Andor Molnar > >>>>> <an...@apache.org> ha scritto: > >>>>>> > >>>>>> The most obvious one which crosses my mind is that I previously > >>> worked > >>>>> on: > >>>>>> > >>>>>> 1) run old version cluster, > >>>>>> 2) connect to each node and run smoke tests, > >>>>>> 3) restart one node with new code, > >>>>>> 4) goto 2) until all nodes are upgraded > >>>>>> > >>>>>> I think this wouldn’t work in a “unit test”, we probably need a > >>>> separate > >>>>> Jenkins job and a nice python script to do this. > >>>>>> > >>>>>> Andor > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>> On 2020. Feb 11., at 16:38, Patrick Hunt <ph...@apache.org> > >>> wrote: > >>>>>>> > >>>>>>> Anyone have ideas how we could add testing for upgrade? Obviously > >>>>> something > >>>>>>> we're missing, esp given it's import. > >>>>> > >>>>> I will send an email next days with a proposal. > >>>>> btw my idea is very like Andor's one > >>>>> > >>>>> Once we have an automatic environment we can launch from Jenkins > >>>>> > >>>>> Enrico > >>>>> > >>>>> > >>>>>>> > >>>>>>> Patrick > >>>>>>> > >>>>>>> On Tue, Feb 11, 2020 at 12:40 AM Enrico Olivelli < > >>>> eolive...@gmail.com> > >>>>>>> wrote: > >>>>>>> > >>>>>>>> Il giorno mar 11 feb 2020 alle ore 09:12 Szalay-Bekő Máté > >>>>>>>> <szalay.beko.m...@gmail.com> ha scritto: > >>>>>>>>> > >>>>>>>>> Hi All, > >>>>>>>>> > >>>>>>>>> about the question from Michael: > >>>>>>>>>> Regarding the fix, can we just make 3.6.0 aware of the old > >>>> protocol > >>>>> and > >>>>>>>>>> speak old message format when it's talking to old server? > >>>>>>>>> > >>>>>>>>> In this particular case, it might be enough. The protocol change > >>>>> happened > >>>>>>>>> now in the 'initial message' sent by the QuorumCnxManager. > >>> Maybe it > >>>>> is > >>>>>>>> not > >>>>>>>>> a problem if the new servers can not initiate channels to the > >>> old > >>>>>>>> servers, > >>>>>>>>> maybe it is enough if these channel gets initiated by the old > >>>> servers > >>>>>>>> only. > >>>>>>>>> I will test it quickly. > >>>>>>>>> > >>>>>>>>> Although I have no idea if any other thing changed in the quorum > >>>>> protocol > >>>>>>>>> between 3.5 and 3.6. In other cases it might not be enough if > >>> the > >>>> new > >>>>>>>>> servers can understand the old messages, as the old servers can > >>>>> break by > >>>>>>>>> not understanding the messages from the new servers. Also, in > >>> the > >>>>> code > >>>>>>>>> currently (AFAIK) there is no generic knowledge of protocol > >>>>> versions, the > >>>>>>>>> servers are not storing that which protocol versions they > >>>> can/should > >>>>> use > >>>>>>>> to > >>>>>>>>> communicate to which particular other servers. Maybe we don't > >>> even > >>>>> need > >>>>>>>>> this, but I would feel better if we would have more tests around > >>>>> these > >>>>>>>>> things. > >>>>>>>>> > >>>>>>>>> My suggestion for the long term: > >>>>>>>>> - let's fix this particular issue now with 3.6.0 quickly (I > >>> start > >>>>> doing > >>>>>>>>> this today) > >>>>>>>>> - let's do some automation (backed up with jenkins) that will > >>> test > >>>> a > >>>>>>>> whole > >>>>>>>>> combinations of different ZooKeeper upgrade paths by making > >>> rolling > >>>>>>>>> upgrades during some light traffic. Let's have a bit better > >>>>> definition > >>>>>>>>> about what we expect (e.g. the quorum is up, but some clients > >>> can > >>>> get > >>>>>>>>> disconnected? What will happen to the ephemeral nodes? Do we > >>> want > >>>> to > >>>>>>>>> gracefully close or transfer the user sessions before stopping > >>> the > >>>>> old > >>>>>>>>> server?) and let's see where this broke. Just by checking the > >>>> code, I > >>>>>>>> don't > >>>>>>>>> think the quorum will always be up (e.g. between older 3.4 > >>> versions > >>>>> and > >>>>>>>>> 3.5). > >>>>>>>> > >>>>>>>> > >>>>>>>> I am happy to work on this topic > >>>>>>>> > >>>>>>>>> - we need to update the Wiki about the working rolling upgrade > >>>> paths > >>>>> and > >>>>>>>>> maybe about workarounds if needed > >>>>>>>>> - we might need to do some fixes (adding backward compatible > >>>> versions > >>>>>>>>> and/or specific parameters that enforce old protocol temporary > >>>>> during the > >>>>>>>>> rolling upgrade that can be changed later to the new protocol by > >>>>> either > >>>>>>>>> dynamic reconfig or by rolling restart) > >>>>>>>> > >>>>>>>> it would be much better on 3.6 code to have some support for > >>>>>>>> compatibility with 3.5 servers > >>>>>>>> we can't require old code to be forward compatible but we can > >>> make > >>>> new > >>>>>>>> code be compatible to a certain extend with old code. > >>>>>>>> If we can achieve this compatibility goal without a flag is > >>> better, > >>>>>>>> users won't have to care about this part and they simply "trust" > >>> on > >>>> us > >>>>>>>> > >>>>>>>> The rollback story is also important, but maybe we are still not > >>>> ready > >>>>>>>> for it, in case of local changes to store, > >>>>>>>> it is better to have a clear design and plan and work for a new > >>>>> release > >>>>>>>> (3.7?) > >>>>>>>> > >>>>>>>> Enrico > >>>>>>>> > >>>>>>>>> > >>>>>>>>> Depending on your comments, I am happy to create a few Jira > >>> tickets > >>>>>>>> around > >>>>>>>>> these topics. > >>>>>>>>> > >>>>>>>>> Kind regards, > >>>>>>>>> Mate > >>>>>>>>> > >>>>>>>>> ps. Enrico, sorry about your RC... I owe you a beer, let me > >>> know if > >>>>> you > >>>>>>>> are > >>>>>>>>> near to Budapest ;) > >>>>>>>>> > >>>>>>>>> On Tue, Feb 11, 2020 at 8:43 AM Enrico Olivelli < > >>>> eolive...@gmail.com > >>>>>> > >>>>>>>> wrote: > >>>>>>>>> > >>>>>>>>>> Good. > >>>>>>>>>> > >>>>>>>>>> I will cancel the vote for 3.6.0rc2. > >>>>>>>>>> > >>>>>>>>>> I appreciate very much If Mate and his colleagues have time to > >>>> work > >>>>> on > >>>>>>>> a > >>>>>>>>>> fix. > >>>>>>>>>> Otherwise I will have cycles next week > >>>>>>>>>> > >>>>>>>>>> I would also like to spend my time in setting up a few minimal > >>>>>>>> integration > >>>>>>>>>> tests about the upgrade story > >>>>>>>>>> > >>>>>>>>>> Enrico > >>>>>>>>>> > >>>>>>>>>> Il Mar 11 Feb 2020, 07:30 Michael Han <h...@apache.org> ha > >>>> scritto: > >>>>>>>>>> > >>>>>>>>>>> Kudos Enrico, very thorough work as the final gate keeper of > >>> the > >>>>>>>> release! > >>>>>>>>>>> > >>>>>>>>>>> Now with this, I'd like to *vote a -1* on the 3.6.0 RC2. > >>>>>>>>>>> > >>>>>>>>>>> I'd recommend we fix this issue for 3.6.0. ZooKeeper is one of > >>>> the > >>>>>>>> rare > >>>>>>>>>>> piece of software that put so much emphasis on compatibilities > >>>> thus > >>>>>>>> it > >>>>>>>>>> just > >>>>>>>>>>> works when upgrade / downgrade, which is amazing. One > >>> guarantee > >>>> we > >>>>>>>> always > >>>>>>>>>>> had is during rolling upgrade, the quorum will always be > >>>> available, > >>>>>>>>>> leading > >>>>>>>>>>> to no service interruption. It would be sad we lose such > >>>> capability > >>>>>>>> given > >>>>>>>>>>> this is still a tractable problem. > >>>>>>>>>>> > >>>>>>>>>>> Regarding the fix, can we just make 3.6.0 aware of the old > >>>> protocol > >>>>>>>> and > >>>>>>>>>>> speak old message format when it's talking to old server? > >>>>> Basically, > >>>>>>>> an > >>>>>>>>>>> ugly if else check against the protocol version should work > >>> and > >>>>>>>> there is > >>>>>>>>>> no > >>>>>>>>>>> need to have multiple pass on rolling upgrade process. > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> On Mon, Feb 10, 2020 at 10:23 PM Enrico Olivelli < > >>>>>>>> eolive...@gmail.com> > >>>>>>>>>>> wrote: > >>>>>>>>>>> > >>>>>>>>>>>> I suggest this plan: > >>>>>>>>>>>> - release 3.6.0 now > >>>>>>>>>>>> - improve the migration story, the flow outlined by Mate is > >>>>>>>>>>>> interesting, but it will take time > >>>>>>>>>>>> > >>>>>>>>>>>> 3.6.0rc2 got enough binding votes so I am going to finalize > >>> the > >>>>>>>>>>>> release this evening (within 8-10 hours) if no one comes out > >>> in > >>>>> the > >>>>>>>>>>>> VOTE thread with a -1 > >>>>>>>>>>>> > >>>>>>>>>>>> Enrico > >>>>>>>>>>>> > >>>>>>>>>>>> Enrico > >>>>>>>>>>>> > >>>>>>>>>>>> Il giorno lun 10 feb 2020 alle ore 19:33 Patrick Hunt > >>>>>>>>>>>> <ph...@apache.org> ha scritto: > >>>>>>>>>>>>> > >>>>>>>>>>>>> On Mon, Feb 10, 2020 at 3:38 AM Andor Molnar < > >>> an...@apache.org > >>>>> > >>>>>>>>>> wrote: > >>>>>>>>>>>>> > >>>>>>>>>>>>>> Hi, > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> Answers inline. > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>>>>> In my experience when you are close to a release it is > >>>>>>>> better to > >>>>>>>>>> to > >>>>>>>>>>>>>>> make big changes. (I am among the approvers of that patch, > >>>>>>>> so I > >>>>>>>>>> am > >>>>>>>>>>>>>>> responsible for this change) > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> Although this statement is acceptable for me, I don’t feel > >>>> this > >>>>>>>>>> patch > >>>>>>>>>>>>>> should not have been merged into 3.6.0. Submission has been > >>>>>>>>>> preceded > >>>>>>>>>>>> by a > >>>>>>>>>>>>>> long argument with MAPR folks who originally wanted to be > >>>>>>>> merged > >>>>>>>>>> into > >>>>>>>>>>>> 3.4 > >>>>>>>>>>>>>> branch (considering the pace how ZooKeeper community is > >>> moving > >>>>>>>>>>>> forward) and > >>>>>>>>>>>>>> we reached an agreement that release it with 3.6.0. > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> Make a long story short, this patch has been outstanding > >>> for > >>>>>>>> ages > >>>>>>>>>>>> without > >>>>>>>>>>>>>> much attention from the community and contributors made a > >>> lot > >>>>>>>> of > >>>>>>>>>>>> effort to > >>>>>>>>>>>>>> get it done before the release. > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>>>>> I would like to ear from people that have been in the > >>>>>>>> community > >>>>>>>>>> for > >>>>>>>>>>>>>>> long time, then I am ready to complete the release process > >>>>>>>> for > >>>>>>>>>>>>>>> 3.6.0rc2. > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> Me too. > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> I tend to accept the way rolling restart works now - as you > >>>>>>>>>> described > >>>>>>>>>>>>>> Enrico - and given that situation was pretty much the same > >>>>>>>> between > >>>>>>>>>>> 3.4 > >>>>>>>>>>>> and > >>>>>>>>>>>>>> 3.5, I don’t feel we have to make additional changes. > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> On the other hand, the fix that Mate suggested sounds quite > >>>>>>>> cool, > >>>>>>>>>> I’m > >>>>>>>>>>>> also > >>>>>>>>>>>>>> happy to work on getting it in. > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> Fyi, Release Management page says the following: > >>>>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>> > >>>>>>>> > >>>>> > >>> > https://cwiki.apache.org/confluence/display/ZOOKEEPER/ReleaseManagement > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> "major.minor release of ZooKeeper must be backwards > >>> compatible > >>>>>>>> with > >>>>>>>>>>> the > >>>>>>>>>>>>>> previous minor release, major.(minor-1)" > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>>> Our users, direct and indirect, value the ability to > >>> migrate to > >>>>>>>> newer > >>>>>>>>>>>>> versions - esp as we drop support for older. Frictions such > >>> as > >>>>>>>> this > >>>>>>>>>> can > >>>>>>>>>>>> be > >>>>>>>>>>>>> a reason to go elsewhere. I'm "pro" b/w compact - esp given > >>> our > >>>>>>>>>>> published > >>>>>>>>>>>>> guidelines. > >>>>>>>>>>>>> > >>>>>>>>>>>>> Patrick > >>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>>>>>>>>> Andor > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>>>>> On 2020. Feb 10., at 11:32, Enrico Olivelli < > >>>>>>>> eolive...@gmail.com > >>>>>>>>>>> > >>>>>>>>>>>> wrote: > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> Thank you Mate for checking and explaining this story. > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> I find it very interesting that the cause is > >>> ZOOKEEPER-3188 > >>>>>>>> as: > >>>>>>>>>>>>>>> - it is the last "big patch" committed to 3.6 before > >>>>>>>> starting the > >>>>>>>>>>>>>>> release process > >>>>>>>>>>>>>>> - it is the cause of the failure of the first RC > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> In my experience when you are close to a release it is > >>>>>>>> better to > >>>>>>>>>> to > >>>>>>>>>>>>>>> make big changes. (I am among the approvers of that patch, > >>>>>>>> so I > >>>>>>>>>> am > >>>>>>>>>>>>>>> responsible for this change) > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> This is a pointer to the change to whom who wants to > >>>>>>>> understand > >>>>>>>>>>>> better > >>>>>>>>>>>>>>> the context > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>> > >>>>>>>> > >>>>> > >>>> > >>> > https://github.com/apache/zookeeper/pull/1048/files#diff-7a209d890686bcba351d758b64b22a7dR11 > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> IIUC even for the upgrade from 3.4 to 3.5 the story was > >>> the > >>>>>>>> same > >>>>>>>>>>> and > >>>>>>>>>>>>>>> if this statement holds then I feel we can continue > >>>>>>>>>>>>>>> with this release. > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> - Reverting ZOOKEEPER-3188 is not an option for me, it is > >>> too > >>>>>>>>>>>> complex. > >>>>>>>>>>>>>>> - Making 3.5 and 3.6 "compatible" can be very tricky and > >>> we > >>>>>>>> do > >>>>>>>>>> not > >>>>>>>>>>>>>>> have tools to certify this compatibility (at least not in > >>> the > >>>>>>>>>> short > >>>>>>>>>>>>>>> term) > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> I would like to ear from people that have been in the > >>>>>>>> community > >>>>>>>>>> for > >>>>>>>>>>>>>>> long time, then I am ready to complete the release process > >>>>>>>> for > >>>>>>>>>>>>>>> 3.6.0rc2. > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> I will update the website and the release notes with a > >>>>>>>> specific > >>>>>>>>>>>>>>> warning about the upgrade, we should also update the Wiki > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> Enrico > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> Il giorno lun 10 feb 2020 alle ore 11:17 Szalay-Bekő Máté > >>>>>>>>>>>>>>> <szalay.beko.m...@gmail.com> ha scritto: > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> Hi Enrico! > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> This is caused by the different PROTOCOL_VERSION in the > >>>>>>>>>>>>>> QuorumCnxManager. > >>>>>>>>>>>>>>>> The Protocol version was changed last time in > >>>>>>>> ZOOKEEPER-2186 > >>>>>>>>>>>> released > >>>>>>>>>>>>>>>> first in 3.4.7 and 3.5.1 to avoid some crashing / fix > >>> some > >>>>>>>> bugs. > >>>>>>>>>>>> Later I > >>>>>>>>>>>>>>>> also changed the protocol version when the format of the > >>>>>>>> initial > >>>>>>>>>>>> message > >>>>>>>>>>>>>>>> changed in ZOOKEEPER-3188. So actually the quorum > >>> protocol > >>>>>>>> is > >>>>>>>>>> not > >>>>>>>>>>>>>>>> compatible in this case and is the 'expected' behavior if > >>>>>>>> you > >>>>>>>>>>>> upgrade > >>>>>>>>>>>>>> e.g > >>>>>>>>>>>>>>>> from 3.4.6 to 3.4.7, or 3.4.6 to 3.5.5 or e.g from 3.5.6 > >>> to > >>>>>>>>>> 3.6.0. > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> We had some discussion in the PR of ZOOKEEPER-3188 back > >>>>>>>> then and > >>>>>>>>>>>> got to > >>>>>>>>>>>>>> the > >>>>>>>>>>>>>>>> conclusion that it is not that bad, as there will be no > >>> data > >>>>>>>>>> loss > >>>>>>>>>>>> as you > >>>>>>>>>>>>>>>> wrote. The tricky thing is that during rolling upgrade we > >>>>>>>> should > >>>>>>>>>>>> ensure > >>>>>>>>>>>>>>>> both backward and forward compatibility to make sure that > >>>>>>>> the > >>>>>>>>>> old > >>>>>>>>>>>> and > >>>>>>>>>>>>>> the > >>>>>>>>>>>>>>>> new part of the quorum can still speak to each other. The > >>>>>>>>>> current > >>>>>>>>>>>>>> solution > >>>>>>>>>>>>>>>> (simply failing if the protocol versions mismatch) is > >>> more > >>>>>>>>>> simple > >>>>>>>>>>>> and > >>>>>>>>>>>>>> still > >>>>>>>>>>>>>>>> working just fine: as the servers are restarted > >>> one-by-one, > >>>>>>>> the > >>>>>>>>>>>> nodes > >>>>>>>>>>>>>> with > >>>>>>>>>>>>>>>> the old protocol version and the nodes with the new > >>> protocol > >>>>>>>>>>> version > >>>>>>>>>>>>>> will > >>>>>>>>>>>>>>>> form two partitions, but any given time only one > >>> partition > >>>>>>>> will > >>>>>>>>>>>> have the > >>>>>>>>>>>>>>>> quorum. > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> Still, thinking it trough, as a side effect in these > >>> cases > >>>>>>>> there > >>>>>>>>>>>> will > >>>>>>>>>>>>>> be a > >>>>>>>>>>>>>>>> short time when none of the partitions will have quorums > >>>>>>>> (when > >>>>>>>>>> we > >>>>>>>>>>>> have N > >>>>>>>>>>>>>>>> servers with the old protocol version, N servers with the > >>>>>>>> new > >>>>>>>>>>>> protocol > >>>>>>>>>>>>>>>> version, and there is one server just being restarted). I > >>>>>>>> am not > >>>>>>>>>>>> sure > >>>>>>>>>>>>>> if we > >>>>>>>>>>>>>>>> can accept this. > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> For ZOOKEEPER-3188 we can add a small patch to make it > >>>>>>>> possible > >>>>>>>>>> to > >>>>>>>>>>>> parse > >>>>>>>>>>>>>>>> the initial message of the old protocol version with the > >>> new > >>>>>>>>>> code. > >>>>>>>>>>>> But > >>>>>>>>>>>>>> I am > >>>>>>>>>>>>>>>> not sure if it would be enough (as the old code will not > >>> be > >>>>>>>> able > >>>>>>>>>>> to > >>>>>>>>>>>>>> parse > >>>>>>>>>>>>>>>> the new initial message). > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> One option can be to make a patch also for 3.5 to have a > >>>>>>>> version > >>>>>>>>>>>> which > >>>>>>>>>>>>>>>> supports both protocol versions. (let's say in 3.5.8) > >>> Then > >>>>>>>> we > >>>>>>>>>> can > >>>>>>>>>>>> write > >>>>>>>>>>>>>> to > >>>>>>>>>>>>>>>> the release note, that if you need rolling upgrade from > >>> any > >>>>>>>>>>> versions > >>>>>>>>>>>>>> since > >>>>>>>>>>>>>>>> 3.4.7, then you have to first upgrade from 3.5.8 before > >>>>>>>>>> upgrading > >>>>>>>>>>> to > >>>>>>>>>>>>>> 3.6.0. > >>>>>>>>>>>>>>>> We can even make the same thing on the 3.4 branch. > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> But I am also new to the community... It would be great > >>> to > >>>>>>>> hear > >>>>>>>>>>> the > >>>>>>>>>>>>>> opinion > >>>>>>>>>>>>>>>> of more experienced people. > >>>>>>>>>>>>>>>> Whatever the decision will be, I am happy to make the > >>>>>>>> changes. > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> And sorry for breaking the RC (if we decide that this > >>> needs > >>>>>>>> to > >>>>>>>>>> be > >>>>>>>>>>>>>>>> changed...). ZOOKEEPER-3188 was a complex patch. > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> Kind regards, > >>>>>>>>>>>>>>>> Mate > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> On Mon, Feb 10, 2020 at 9:47 AM Enrico Olivelli < > >>>>>>>>>>>> eolive...@gmail.com> > >>>>>>>>>>>>>> wrote: > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> Hi, > >>>>>>>>>>>>>>>>> even if we had enough binding +1 on 3.6.0rc2 before > >>>>>>>> closing the > >>>>>>>>>>>> VOTE > >>>>>>>>>>>>>>>>> of 3.6.0 I wanted to finish my tests and I am coming to > >>> an > >>>>>>>>>>> apparent > >>>>>>>>>>>>>>>>> blocker. > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> I am trying to upgrade a 3.5.6 cluster to 3.6.0, but it > >>>>>>>> looks > >>>>>>>>>>> like > >>>>>>>>>>>>>>>>> peers are not able to talk to each other. > >>>>>>>>>>>>>>>>> I have a cluster of 3, server1, server2 and server3. > >>>>>>>>>>>>>>>>> When I upgrade server1 to 3.6.0rc2 I see this kind of > >>>>>>>> errors on > >>>>>>>>>>> 3.5 > >>>>>>>>>>>>>> nodes: > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> 2020-02-10 09:35:07,745 [myid:3] - INFO > >>>>>>>>>>>>>>>>> [localhost/127.0.0.1:3334:QuorumCnxManager$Listener@918] > >>> - > >>>>>>>>>>>> Received > >>>>>>>>>>>>>>>>> connection request 127.0.0.1:62591 > >>>>>>>>>>>>>>>>> 2020-02-10 09:35:07,746 [myid:3] - ERROR > >>>>>>>>>>>>>>>>> [localhost/127.0.0.1:3334:QuorumCnxManager@527] - > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>> > >>>>>>>> > >>>>> > >>>> > >>> > org.apache.zookeeper.server.quorum.QuorumCnxManager$InitialMessage$InitialMessageException: > >>>>>>>>>>>>>>>>> Got unrecognized protocol version -65535 > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> Once I upgrade all of the peers the system is up and > >>>>>>>> running, > >>>>>>>>>>>> without > >>>>>>>>>>>>>>>>> apparently no data loss. > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> During the upgrade as soon as I upgrade the first node, > >>>>>>>> say, > >>>>>>>>>>>> server1, > >>>>>>>>>>>>>>>>> server1 is not able to accept connections (error "Close > >>> of > >>>>>>>>>>> session > >>>>>>>>>>>> 0x0 > >>>>>>>>>>>>>>>>> java.io.IOException: ZooKeeperServer not running") from > >>>>>>>>>> clients, > >>>>>>>>>>>> this > >>>>>>>>>>>>>>>>> is expected, because as far as it cannot talk with the > >>>>>>>> other > >>>>>>>>>>> peers > >>>>>>>>>>>> it > >>>>>>>>>>>>>>>>> is practically partitioned away from the cluster. > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> My questions are: > >>>>>>>>>>>>>>>>> 1) is this expected ? I can't remember protocol changes > >>>>>>>> from > >>>>>>>>>> 3.5 > >>>>>>>>>>> to > >>>>>>>>>>>>>>>>> 3.6, but actually 3.6 diverged from 3.5 branch so long > >>> ago, > >>>>>>>>>> and I > >>>>>>>>>>>> was > >>>>>>>>>>>>>>>>> not in the community as dev so I cannot tell > >>>>>>>>>>>>>>>>> 2) is this a viable option for users ? to have some > >>>>>>>> temporary > >>>>>>>>>>>> glitch > >>>>>>>>>>>>>>>>> during the upgrade and hope that the upgrade completes > >>>>>>>> without > >>>>>>>>>>>>>>>>> troubles ? > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> In theory as long as two servers are running the same > >>> major > >>>>>>>>>>> version > >>>>>>>>>>>>>>>>> (3.5 or 3.6) we have a quorum and the system is able to > >>>>>>>> make > >>>>>>>>>>>> progress > >>>>>>>>>>>>>>>>> and to server clients. > >>>>>>>>>>>>>>>>> I feel that this is quite dangerous, but I don't have > >>>>>>>> enough > >>>>>>>>>>>> context > >>>>>>>>>>>>>>>>> to understand how this problem is possible and when we > >>>>>>>> decided > >>>>>>>>>> to > >>>>>>>>>>>>>>>>> break compatibility. > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> The other option is that I am wrong in my test and I am > >>>>>>>> messing > >>>>>>>>>>> up > >>>>>>>>>>>> :-) > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> The other upgrade path I would like to see working like > >>> a > >>>>>>>> charm > >>>>>>>>>>> is > >>>>>>>>>>>> the > >>>>>>>>>>>>>>>>> upgrade from 3.4 to 3.6, as I see that as soon as we > >>>>>>>> release > >>>>>>>>>> 3.6 > >>>>>>>>>>> we > >>>>>>>>>>>>>>>>> should encourage users to move to 3.6 and not to 3.5. > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> Regards > >>>>>>>>>>>>>>>>> Enrico > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>> > >>>>>>>> > >>>>>> > >>>>> > >>>> > >>> > >>> > >