Hi, Ismael,

Sounds good. The KIP looks good to me.

Thanks,

Jun

On Wed, Jun 9, 2021 at 9:16 AM Ismael Juma <ism...@juma.me.uk> wrote:

> Thanks Jun. After further thought and discussion with Jason, we decided to
> move `log.record.version.force.upgrade` to a "Future Work" section.
>
> There are more details in the KIP, but there are some complexities in
> making it possible to remove read support for v0/v1 formats. Given that, we
> decided to focus on the items that have to happen by 3.0 in this KIP:
> ensuring all new client writes use v2. The rest can happen via a subsequent
> KIP if we can devise a good solution.
>
> I will start the vote thread in parallel, but happy to discuss further.
>
> Ismael
>
> On Tue, Jun 8, 2021 at 9:19 AM Jun Rao <j...@confluent.io.invalid> wrote:
>
> > Hi, Ismael,
> >
> > Thanks for the KIP.
> >
> > Regarding log.record.version.force.upgrade:
> > 1. Is that a topic level or a broker level config? The slight benefit of
> > topic level is that it allows people to upgrade incrementally. The
> > potential downside is the additional complexity associated with it.
> > 2. When log.record.version.force.upgrade is set to 2, do we need to scan
> > all batches in all existing segments during broker restart to verify the
> > record format? Since this is rarely needed, the performance impact may
> not
> > be a big concern. However, it will probably be useful to document this in
> > the KIP.
> > 3. Related to 2, we need a way to know when the upgrading to v2 message
> > format has completed. This could be as simple as some logging. It would
> be
> > useful to document this in the KIP.
> > 4. Related to 2, once the upgrade to v2 message format has completed, do
> we
> > expect the user to set log.record.version.force.upgrade to null?
> Otherwise,
> > we will pay the batch scanning overhead on every broker restart. It would
> > be useful to document the upgrade process related to this.
> >
> > Thanks,
> >
> > Jun
> >
> >
> > On Tue, Jun 8, 2021 at 8:21 AM Ismael Juma <ism...@juma.me.uk> wrote:
> >
> > > Hi Jason,
> > >
> > > Thanks for the thoughtful comments. Responses below.
> > >
> > > 1. Good point. I updated the KIP to up-convert during replication if
> the
> > > IBP is 3.0. I am still not 100% sure if this is truly required, but it
> > does
> > > seem like a good idea to avoid flip-flopping like this. I'll follow up
> > with
> > > you to understand if this is a correctness requirement or something
> that
> > > makes the system easier to reason about and then update the KIP and
> this
> > > thread.
> > >
> > > 2. Agreed. I updated the KIP to mention that we will up-convert to
> single
> > > record batches for the uncompressed case.
> > >
> > > 3. I added a note regarding produce request versions we will no longer
> > > support. I originally did not include this since the broker doesn't
> seem
> > to
> > > do the validation for produce requests while it does for fetch
> requests.
> > > But from a specification perspective, it makes sense to include it
> since
> > > the current behavior is confusing (it may be this way for compatibility
> > > with now very old clients). With regards to list offsets v0, I suggest
> we
> > > do that via a separate KIP. As you said, there might be other similar
> > > opportunities and since the target would be AK 4.0, we have a bit of
> time
> > > to do the analysis.
> > >
> > > Ismael
> > >
> > > On Fri, Jun 4, 2021 at 2:10 PM Jason Gustafson
> > <ja...@confluent.io.invalid
> > > >
> > > wrote:
> > >
> > > > Hi Ismael,
> > > >
> > > > I agree it would be awesome to drop support for the old formats! A
> few
> > > > comments below:
> > > >
> > > > 1. Suppose that a partition with 3 replicas begins at v0. One broker
> is
> > > > upgraded to v2 with the new "force upgrade" config as part of a
> rolling
> > > > restart, which leaves two replicas on v0 and one on v2. The KIP
> > documents
> > > > that replicas will take the format from the leader without any
> > > conversion,
> > > > so I'm a little concerned that leader changes in this state could
> > result
> > > in
> > > > the version flipping from v2 to v0. Could that happen? Say, for
> > example,
> > > if
> > > > the third replica was catching up while the rolling restart was in
> > > > progress. Since it is probably an unlikely case in practice, would it
> > > make
> > > > sense to allow up-conversion during replication when "force upgrade"
> > has
> > > > been enabled? Not sure I see any great alternatives to this.
> > > >
> > > > 2. A related question concerns batching when upgrading from the
> > > non-batched
> > > > formats (i.e. v0 and v1 when no compression is in use). I suspect the
> > > only
> > > > reasonable way to do this is to treat each individual record as a
> batch
> > > of
> > > > 1 during the conversion process. Otherwise, I am not sure we can come
> > up
> > > > with a deterministic approach to re-batching which can be applied
> > > > consistently on all replicas (especially taking into account
> > compaction).
> > > > The reason this is important is that replication is aligned by
> batches,
> > > so
> > > > if the batches are not consistent, the replication won't work. The
> only
> > > > problem with using single-record batches is that the v2 message
> format
> > > has
> > > > some additional overhead for the batch itself when compared with the
> v0
> > > and
> > > > v1 individual record format. So the up-conversion process would
> likely
> > > > increase storage. I don't think this is a dealbreaker, but probably
> > worth
> > > > calling out somewhere.
> > > >
> > > > 3. In 4.0, we are dropping support for Fetch versions 0 through 3. I
> > > might
> > > > have missed it in the KIP, but it sounds like we need a similar
> > > restriction
> > > > on Produce versions since up-conversion will also not be supported?
> > Would
> > > > it be reasonable to drop ListOffsets v0 at the same time? It is not
> > > related
> > > > to the message format, but the Fetch restriction will already
> > effectively
> > > > kill any client that might still be using this wonky version. Not
> sure
> > if
> > > > there are any similar opportunities, but might be worth checking.
> > > >
> > > > Thanks,
> > > > Jason
> > > >
> > > >
> > > >
> > > > On Fri, Jun 4, 2021 at 6:14 AM Ismael Juma <ism...@juma.me.uk>
> wrote:
> > > >
> > > > > If there are no comments or objections, I will start a vote on this
> > > soon.
> > > > >
> > > > > On Tue, Jun 1, 2021 at 7:59 AM Ismael Juma <ism...@juma.me.uk>
> > wrote:
> > > > >
> > > > > > Hi all,
> > > > > >
> > > > > > It's time to start the process of sunsetting message formats v0
> and
> > > v1
> > > > in
> > > > > > order to establish a new baseline in terms of supported
> > client/broker
> > > > > > behavior and to improve maintainability & supportability of
> Kafka.
> > > > Please
> > > > > > take a look at the proposal:
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-724%3A+Drop+support+for+message+formats+v0+and+v1
> > > > > >
> > > > > > Ismael
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to