On Thu, Feb 1, 2018 at 12:03 PM, Ivan Kelly <iv...@apache.org> wrote:

> Ok, I think we're on the same page as to what is needed. The tool
> needs to be in place before any version is EOL.
>
> I do think we should retain some BC tests with the older versions, of the
> form:
> - init cluster with 4.1.0

- run 4.7.0 upgrade tool
> - start latest (4.8.0-SNAPSHOT) bookie and client
>

that is fine.


>
> Another thing to consider is that ledger metadata upgrade will involve
> downtime for the client. This is fine, they can have a maintenance
> window, but we should be clear in the documentation that this is
> needed.
>
> -Ivan
>
> On Thu, Feb 1, 2018 at 5:58 PM, Sijie Guo <guosi...@gmail.com> wrote:
> > I think you misunderstood what I was saying.
> >
> >
> > On Thu, Feb 1, 2018 at 4:53 AM, Ivan Kelly <iv...@apache.org> wrote:
> >
> >> >> What do we mean by stopping support for BC?
> >> >
> >> > It means we will NOT consider BC problems with those old releases.
> >>
> >> If EOL means ignoring all BC considerations, then I'm -1 on these
> >> proposals. But I don't think we need to go to those extremes.
> >> I think we need to specify what BC guarantees we give on any version,
> >> and then EOL policies will follow from that. The 3 big BC
> >> considerations, as I see it, are:
> >> 1) Data on the bookie
> >> 2) Client wire protocol
> >> 3) Data shared between bookies and clients (i.e. zookeeper metadata)
> >>
> >> For 1 we can have quite a short timeframe for EOL old software.
> >> Bookies can be upgraded individually, and this is controlled by the
> >> administrator.
> >> For 2 we need a bit longer, because within an organisation there may
> >> be many different versions of the client knocking around and it's hard
> >> to get everyone to upgrade.
> >> For 3 we can pretty much never have a hard break. If a cluster was
> >> initialized with an old version, they must be able to able to upgrade
> >> that cluster to the latest version of the software. Otherwise they
> >> will stick with the old version forever.
> >>
> >
> > when I am saying stop all BC consideration, I mean:
> >
> > 1) all the data and metadata will be upgraded to the minimal version we
> > claim to support.
> > 2) all the client would have to upgrade to the minimal version we claim
> to
> > support for wire protocol.
> >
> > Let's take 4.7.0 as the example, when I am saying enforce EOL at 4.7.0.
> It
> > means 4.7.0 will still compatible with 4.1.0. but at 4.7.0 we are
> thinking
> > about dropping 4.1.x, 4.2.x and 4.3.x.
> >
> > so at 4.7.0:
> >
> > - we will have to develop a tool to upgrade metadata and data to the
> > version that will be recognized by 4.4.x and onwards releases.
> >
> > so at 4.8.0:
> >
> > - we will not consider clients older than 4.4.x. all the legal code can
> be
> > potentially removed.
> >
> > That means if a cluster (either metadata/data produced by clients older
> > than 4.4.x or still have old clients) want to upgrade to 4.8.0, it has to
> > first upgrade the cluster (both metadata and data) to 4.7.0 following the
> > instructions provided at 4.7.0
> > and upgrade all the clients to minimal version that 4.8.0 will support.
> > After all is done first, the cluster can be upgraded to 4.8.0.
> >
> >
> > Hope this example make things clear.
> >
> > Enforcing EOL means dropping the BC considerations between the oldest
> > version and newest version and limit the BC considerations within a
> limited
> > number of versions which is more controllable, maintenanable. Using the
> > example above,
> > it means if you want to upgrade from 4.7.x to 4.8.x, please use the tools
> > provided in 4.7.x to ensure metadata/data are upgraded to latest version
> > and no more clients older than 4.4.0 talk to the cluster.
> >
> >
> >>
> >> > for example, the password and digest type was introduced at a very old
> >> > release.
> >> > There is code assuming ledgers might not have password or digest.
> >> However,
> >> > the releases onwards would already have those fields.
> >> > If we stop supporting those old version, we can remove that special BC
> >> > code, which will make code clearer to maintain.
> >>
> >> This code is in the client. I'm fine with stopping support for all
> >> clients older than a certain era. However, yahoo is still on 4.3, so
> >> we should at least support back that far until they've been migrated
> >> forward.
> >>
> >
> > the yahoo branch is between 4.3 and 4.4. it is a special case that we
> need
> > to take care of. we are not dropping it out of consideration radar.
> >
> >
> >>
> >> >> The BC
> >> >> tests should help in this regard, but we need keep testing scenarios
> >> >> where the original cluster was brought up in the oldest version
> >> >> (4.1.0).
> >> >
> >> > If we stop supporting 4.1.0, we don't need to test those scenarios. We
> >> > started with from the lowest version we are claiming to support.
> >>
> >> Are we supporting the software or data that was created with that
> >> software? That's two different things. Sure, we're not going to fix
> >> bugs on pre-4.4.0 releases, but there are pre-4.4.0 clusters running
> >> in the wild (yahoo being an example), and they have to be usable with
> >> the latest software, otherwise they will never upgrade. I had this in
> >> my previous job where they made a big breaking BC change in the
> >> metadata between two versions. While it did allow us to delete a lot
> >> of code, we ended up supporting two codebases forever, as customers
> >> were unable to upgrade to the latest version.
> >>
> >
> > Please check my example above to see if that makes sense to you.
> >
> >
> >>
> >> > That is the whole point of having EOL.
> >> It's not clear what the point of having EOL is, since we don't have a
> >> clearly defined EOL policy nor BC policy.
> >>
> >
> > Please check my example above to see if that makes sense to you.
> >
> >
> >>
> >> -Ivan
> >>
>

Reply via email to