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

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